patchpanel: Add NetworkMonitorService and NeighborLinkMonitor
This change implements the NeighborLinkMonitor which monitors the
reachability to {ipv4, ipv6} x {gateway, local DNS servers} on a given
interface, based on the NUD state information from Linux kernel. The
monitor listens to the NUD state changed events and periodically sets
the state to NUD_PROBE via rtnetlink messages.
NetworkMonitorService is only a wrapper for NeighborLinkMonitor. It will
take more monitor work in the future.
BUG=b:147256664
TEST=unit_tests; manually tests on atlas with an IPv6-only wifi network.
Change-Id: If4b0bc3a4953e78bdc5b609f701ad956b9d5a764
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2141401
Tested-by: Jie Jiang <jiejiang@chromium.org>
Commit-Queue: Jie Jiang <jiejiang@chromium.org>
Reviewed-by: Garrick Evans <garrick@chromium.org>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
diff --git a/patchpanel/manager.h b/patchpanel/manager.h
index 29c4073..fed2adf 100644
--- a/patchpanel/manager.h
+++ b/patchpanel/manager.h
@@ -22,6 +22,7 @@
#include "patchpanel/arc_service.h"
#include "patchpanel/crostini_service.h"
#include "patchpanel/helper_process.h"
+#include "patchpanel/network_monitor_service.h"
#include "patchpanel/routing_service.h"
#include "patchpanel/shill_client.h"
#include "patchpanel/socket.h"
@@ -169,6 +170,7 @@
std::unique_ptr<HelperProcess> adb_proxy_;
std::unique_ptr<HelperProcess> mcast_proxy_;
std::unique_ptr<HelperProcess> nd_proxy_;
+ std::unique_ptr<NetworkMonitorService> network_monitor_svc_;
AddressManager addr_mgr_;