diff options
| author | Michael Biebl <biebl@debian.org> | 2019-11-25 18:54:42 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2019-11-25 18:54:42 +0100 |
| commit | 56e2e0e97cd4786bf3b1f7fd607d4a9e4fc6bc8d (patch) | |
| tree | 43de6f27b10e23ff907dbe4e2c8fe0e52f01b13b /src/platform/nm-platform.c | |
| parent | 85b54c33239239aa9ec8ff2f128f25a72dd587e1 (diff) | |
| parent | e22609983008e1a669196ad64ba3a59ae8c76e0d (diff) | |
Update upstream source from tag 'upstream/1.20.8'
Update to upstream version '1.20.8' with Debian dir 5fbac145116049621c01e7eb75da24ed4f79d25e
Diffstat (limited to 'src/platform/nm-platform.c')
| -rw-r--r-- | src/platform/nm-platform.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 6ead15ed..0a7acba9 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -610,6 +610,54 @@ nm_platform_sysctl_ip_conf_set_ipv6_hop_limit_safe (NMPlatform *self, return TRUE; } +gboolean +nm_platform_sysctl_ip_neigh_set_ipv6_reachable_time (NMPlatform *self, + const char *iface, + guint value_ms) +{ + char path[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE]; + char str[128]; + guint clamped; + + _CHECK_SELF (self, klass, FALSE); + + if (!value_ms) + return TRUE; + + /* RFC 4861 says the value can't be greater than one hour. + * Also use a reasonable lower threshold. */ + clamped = NM_CLAMP (value_ms, 100, 3600000); + nm_sprintf_buf (path, "/proc/sys/net/ipv6/neigh/%s/base_reachable_time_ms", iface); + nm_sprintf_buf (str, "%u", clamped); + if (!nm_platform_sysctl_set (self, NMP_SYSCTL_PATHID_ABSOLUTE (path), str)) + return FALSE; + + /* Set stale time in the same way as kernel */ + nm_sprintf_buf (path, "/proc/sys/net/ipv6/neigh/%s/gc_stale_time", iface); + nm_sprintf_buf (str, "%u", clamped * 3 / 1000); + + return nm_platform_sysctl_set (self, NMP_SYSCTL_PATHID_ABSOLUTE (path), str); +} + +gboolean +nm_platform_sysctl_ip_neigh_set_ipv6_retrans_time (NMPlatform *self, + const char *iface, + guint value_ms) +{ + char path[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE]; + char str[128]; + + _CHECK_SELF (self, klass, FALSE); + + if (!value_ms) + return TRUE; + + nm_sprintf_buf (path, "/proc/sys/net/ipv6/neigh/%s/retrans_time_ms", iface); + nm_sprintf_buf (str, "%u", NM_CLAMP (value_ms, 10, 3600000)); + + return nm_platform_sysctl_set (self, NMP_SYSCTL_PATHID_ABSOLUTE (path), str); +} + /** * nm_platform_sysctl_get: * @self: platform instance |