// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ARC_NETWORK_NEIGHBOR_FINDER_H_
#define ARC_NETWORK_NEIGHBOR_FINDER_H_

#include <netinet/in.h>
#include <sys/socket.h>

#include <memory>
#include <string>

#include <base/bind.h>
#include <base/macros.h>
#include <base/memory/weak_ptr.h>

#include "arc/network/ndp_handler.h"

namespace arc_networkd {

// Performs IPv6 neighbor discovery, to figure out whether some other node on
// the network is already using IP address |addr|.
class NeighborFinder : public NdpHandler {
 public:
  NeighborFinder() {}
  virtual ~NeighborFinder() {}

  bool Check(const std::string& ifname,
             const struct in6_addr& addr,
             const base::Callback<void(bool)>& callback);

 protected:
  // NdpHandler override.
  int OnNdpMsg(struct ndp* ndp, struct ndp_msg* msg) override;

  void Timeout();

  bool running_{false};
  struct in6_addr check_addr_;
  base::Callback<void(bool)> result_callback_;

  base::WeakPtrFactory<NeighborFinder> weak_factory_{this};
};

}  // namespace arc_networkd

#endif  // ARC_NETWORK_NEIGHBOR_FINDER_H_
