diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-04-25 08:23:14 +0000 | 
|---|---|---|
| committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-04-25 08:23:14 +0000 | 
| commit | 0bf4b570fe2d239b9fbabd3ae801ad3f04a06bde (patch) | |
| tree | 00ac67d3d1f09a536a9e9b94ce9d4858c4405f57 /python | |
| parent | afb910c1efbe5f7c98c25688f0eb2546db218dd3 (diff) | |
| download | vyos-1x-0bf4b570fe2d239b9fbabd3ae801ad3f04a06bde.tar.gz vyos-1x-0bf4b570fe2d239b9fbabd3ae801ad3f04a06bde.zip | |
T6258: Add sysctl base-reachable-time for IPv6
Add abiilty to change `base_reachable_time_ms` option
/proc/sys/net/ipv6/neigh/{ifname}/base_reachable_time_ms
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ifconfig/interface.py | 28 | 
1 files changed, 27 insertions, 1 deletions
| diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index 1b86982c4..f0897bc21 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -1,4 +1,4 @@ -# Copyright 2019-2023 VyOS maintainers and contributors <maintainers@vyos.io> +# Copyright 2019-2024 VyOS maintainers and contributors <maintainers@vyos.io>  #  # This library is free software; you can redistribute it and/or  # modify it under the terms of the GNU Lesser General Public @@ -193,6 +193,9 @@ class Interface(Control):              'validate': assert_positive,              'location': '/proc/sys/net/ipv6/conf/{ifname}/dad_transmits',          }, +        'ipv6_cache_tmo': { +            'location': '/proc/sys/net/ipv6/neigh/{ifname}/base_reachable_time_ms', +        },          'path_cost': {              # XXX: we should set a maximum              'validate': assert_positive, @@ -261,6 +264,9 @@ class Interface(Control):          'ipv6_dad_transmits': {              'location': '/proc/sys/net/ipv6/conf/{ifname}/dad_transmits',          }, +        'ipv6_cache_tmo': { +            'location': '/proc/sys/net/ipv6/neigh/{ifname}/base_reachable_time_ms', +        },          'proxy_arp': {              'location': '/proc/sys/net/ipv4/conf/{ifname}/proxy_arp',          }, @@ -613,6 +619,21 @@ class Interface(Control):              return None          return self.set_interface('arp_cache_tmo', tmo) +    def set_ipv6_cache_tmo(self, tmo): +        """ +        Set IPv6 cache timeout value in seconds. Internal Kernel representation +        is in milliseconds. + +        Example: +        >>> from vyos.ifconfig import Interface +        >>> Interface('eth0').set_ipv6_cache_tmo(40) +        """ +        tmo = str(int(tmo) * 1000) +        tmp = self.get_interface('ipv6_cache_tmo') +        if tmp == tmo: +            return None +        return self.set_interface('ipv6_cache_tmo', tmo) +      def _cleanup_mss_rules(self, table, ifname):          commands = []          results = self._cmd(f'nft -a list chain {table} VYOS_TCP_MSS').split("\n") @@ -1698,6 +1719,11 @@ class Interface(Control):              for addr in tmp:                  self.add_ipv6_eui64_address(addr) +        # Configure IPv6 base time in milliseconds - has default value +        tmp = dict_search('ipv6.base_reachable_time', config) +        value = tmp if (tmp != None) else '30' +        self.set_ipv6_cache_tmo(value) +          # re-add ourselves to any bridge we might have fallen out of          if 'is_bridge_member' in config:              tmp = config.get('is_bridge_member') | 
