diff options
| author | Erik Kline <ek@google.com> | 2015-05-12 15:58:49 +0900 |
|---|---|---|
| committer | Erik Kline <ek@google.com> | 2015-05-13 12:32:28 +0900 |
| commit | 145fd25509e08fb2d76fcff8d011e1aa9a2e6455 (patch) | |
| tree | 212c74d2aa941fb5e5f98a2abaaf19a056e27afc /server/InterfaceController.cpp | |
| parent | e1da484b30196cc6ec496407e32c67bcb5295bec (diff) | |
InterfaceController::setBaseReachableTimeMs()
Add an InterfaceController::setBaseReachableTimeMs() method to set
the ARP/ND default reachable time, as configured in:
/proc/sys/net/ipv4/{interface}/base_reachable_time_ms
/proc/sys/net/ipv6/{interface}/base_reachable_time_ms
Bug: 18581716
Change-Id: Idc652e81396d81efe0f08bb1d6dc38bc8e554a56
Diffstat (limited to 'server/InterfaceController.cpp')
| -rw-r--r-- | server/InterfaceController.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/server/InterfaceController.cpp b/server/InterfaceController.cpp index 373bfd0c..640bf8c6 100644 --- a/server/InterfaceController.cpp +++ b/server/InterfaceController.cpp @@ -34,6 +34,10 @@ namespace { const char ipv6_proc_path[] = "/proc/sys/net/ipv6/conf"; +const char ipv4_neigh_conf_dir[] = "/proc/sys/net/ipv4/neigh"; + +const char ipv6_neigh_conf_dir[] = "/proc/sys/net/ipv6/neigh"; + const char sys_net_path[] = "/sys/class/net"; const char wl_util_path[] = "/system/xbin/wlutil"; @@ -86,6 +90,9 @@ InterfaceController::InterfaceController() { // Enable optimistic DAD for IPv6 addresses on all interfaces. setIPv6OptimisticMode("1"); + + // Reduce the ARP/ND base reachable time from the default (30sec) to 15sec. + setBaseReachableTimeMs(15 * 1000); } InterfaceController::~InterfaceController() { @@ -160,6 +167,12 @@ int InterfaceController::setMtu(const char *interface, const char *mtu) return writeValueToPath(sys_net_path, interface, "mtu", mtu); } +void InterfaceController::setBaseReachableTimeMs(unsigned int millis) { + std::string value(StringPrintf("%u", millis)); + setOnAllInterfaces(ipv4_neigh_conf_dir, "base_reachable_time_ms", value.c_str()); + setOnAllInterfaces(ipv6_neigh_conf_dir, "base_reachable_time_ms", value.c_str()); +} + void InterfaceController::setIPv6OptimisticMode(const char *value) { setOnAllInterfaces(ipv6_proc_path, "optimistic_dad", value); setOnAllInterfaces(ipv6_proc_path, "use_optimistic", value); |
