summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-04-20 20:59:57 +0200
committerChristian Breunig <christian@breunig.cc>2025-04-22 16:06:19 +0200
commitde44c6aef249b5c3350a5114a38eee3a761f7de0 (patch)
treea752b4330e592799f0e890a073073a1d2f92bd3e /python
parent563488b1234560cfd3cb5aa9c8ec3f4b7f10d86b (diff)
downloadvyos-1x-de44c6aef249b5c3350a5114a38eee3a761f7de0.tar.gz
vyos-1x-de44c6aef249b5c3350a5114a38eee3a761f7de0.zip
interface: T7379: do not request SLAAC default route when only DHCPv6 is set
When an interface runs in DHCPv6 only mode, there is no reason to have a default installed that was received via SLAAC. If SLAAC is needed, it should be turned on explicitly. This bug was only triggered during system boot where a DHCPv6 client address and a default route to a link-local address was shown in the system. If DHCPv6 was enabled only on an interface while VyOS was already running - no default route got installed.
Diffstat (limited to 'python')
-rw-r--r--python/vyos/ifconfig/interface.py14
1 files changed, 4 insertions, 10 deletions
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py
index baa45f5bd..337e3ec63 100644
--- a/python/vyos/ifconfig/interface.py
+++ b/python/vyos/ifconfig/interface.py
@@ -913,7 +913,7 @@ class Interface(Control):
rc = self.set_interface('ipv6_autoconf', autoconf)
if autoconf == '0':
flushed = self.flush_ipv6_slaac_addrs()
- self.flush_ipv6_slaac_routes(flushed)
+ self.flush_ipv6_slaac_routes(ra_addrs=flushed)
return rc
def add_ipv6_eui64_address(self, prefix):
@@ -1326,7 +1326,7 @@ class Interface(Control):
netns = get_interface_namespace(self.ifname)
netns_cmd = f'ip netns exec {netns}' if netns else ''
tmp = get_interface_address(self.ifname)
- if 'addr_info' not in tmp:
+ if not tmp or 'addr_info' not in tmp:
return
# Parse interface IP addresses. Example data:
@@ -1354,13 +1354,9 @@ class Interface(Control):
Will raise an exception on error.
"""
- # Do not flush default route if interface uses DHCPv6 in addition to SLAAC
- if 'address' in self.config and 'dhcpv6' in self.config['address']:
- return None
-
# Find IPv6 connected prefixes for flushed SLAAC addresses
connected = []
- for addr in ra_addrs:
+ for addr in ra_addrs if isinstance(ra_addrs, list) else []:
connected.append(str(IPv6Interface(addr).network))
netns = get_interface_namespace(self.ifname)
@@ -1865,9 +1861,7 @@ class Interface(Control):
# IPv6 router advertisements
tmp = dict_search('ipv6.address.autoconf', config)
- value = '2' if (tmp != None) else '1'
- if 'dhcpv6' in new_addr:
- value = '2'
+ value = '2' if (tmp != None) else '0'
self.set_ipv6_accept_ra(value)
# IPv6 address autoconfiguration