From e0c123d57f96d155f2a1cf943c14ad66a4739a84 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Wed, 10 May 2023 10:42:09 +0200 Subject: [PATCH] update nlcache after sysctl_set accept_ra/autoconf --- ifupdown2/addons/address.py | 3 +++ ifupdown2/addons/auto.py | 10 ++++++++-- ifupdown2/lib/nlcache.py | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ifupdown2/addons/address.py b/ifupdown2/addons/address.py index ef981f8e..11e4512b 100644 --- a/ifupdown2/addons/address.py +++ b/ifupdown2/addons/address.py @@ -1029,6 +1029,7 @@ def _sysctl_config(self, ifaceobj): self.sysctl_set('net.ipv6.conf.%s.accept_ra' %('/'.join(ifaceobj.name.split("."))), accept_ra) + self.cache.update_link_inet6_accept_ra(ifaceobj.name, accept_ra) running_autoconf = self.cache.get_link_inet6_autoconf(ifaceobj) if running_autoconf == '': @@ -1041,6 +1042,8 @@ def _sysctl_config(self, ifaceobj): self.sysctl_set('net.ipv6.conf.%s.autoconf' %('/'.join(ifaceobj.name.split("."))), autoconf) + self.cache.update_link_inet6_autoconf(ifaceobj.name, autoconf) + except Exception as e: if not setting_default_value: ifaceobj.status = ifaceStatus.ERROR diff --git a/ifupdown2/addons/auto.py b/ifupdown2/addons/auto.py index b0466928..ee3e39ae 100644 --- a/ifupdown2/addons/auto.py +++ b/ifupdown2/addons/auto.py @@ -54,14 +54,20 @@ def _up(self, ifaceobj): if 'inet6' in ifaceobj.addr_family: running_accept_ra = self.cache.get_link_inet6_accept_ra(ifaceobj) if running_accept_ra != '2': + accept_ra = '2' self.sysctl_set('net.ipv6.conf.%s.accept_ra' %('/'.join(ifaceobj.name.split("."))), - 2) + accept_ra) + self.cache.update_link_inet6_accept_ra(ifaceobj.name, accept_ra) + running_autoconf = self.cache.get_link_inet6_autoconf(ifaceobj) if running_autoconf != '1': + autoconf = '1' self.sysctl_set('net.ipv6.conf.%s.autoconf' %('/'.join(ifaceobj.name.split("."))), - 1) + autoconf) + self.cache.update_link_inet6_autoconf(ifaceobj.name, autoconf) + except Exception as e: self.logger.error("%s: %s" % (ifaceobj.name, str(e))) ifaceobj.set_status(ifaceStatus.ERROR) diff --git a/ifupdown2/lib/nlcache.py b/ifupdown2/lib/nlcache.py index 855f2f27..0d2f6241 100644 --- a/ifupdown2/lib/nlcache.py +++ b/ifupdown2/lib/nlcache.py @@ -1204,6 +1204,27 @@ def get_link_inet6_autoconf(self, ifaceobj): autoconf = '' return autoconf + def update_link_inet6_accept_ra(self, ifname, accept_ra): + try: + with self._cache_lock: + try: + self._link_cache[ifname].attributes[Link.IFLA_AF_SPEC].value[socket.AF_INET6][Link.IFLA_INET6_CONF]['accept_ra'] = accept_ra + except Exception as e: + pass + except Exception: + pass + + def update_link_inet6_autoconf(self, ifname, autoconf): + try: + with self._cache_lock: + try: + self._link_cache[ifname].attributes[Link.IFLA_AF_SPEC].value[socket.AF_INET6][Link.IFLA_INET6_CONF]['autoconf'] = autoconf + except Exception as e: + pass + except Exception: + pass + + ##################################################### ##################################################### #####################################################