summaryrefslogtreecommitdiff
path: root/python/vyos/ifconfig
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-05-11 18:46:18 +0200
committerGitHub <noreply@github.com>2020-05-11 18:46:18 +0200
commit6346a5f1a08e878e51213031ac33dcec08e368cd (patch)
tree7ace538f7568a8005f0e4f0987b27f0fd8dde20b /python/vyos/ifconfig
parent4ca0e563861f1d0ebf99afc012a9b95d9492e399 (diff)
parent49fc2c83adfa2c5dc169cae675f65c8e36a7d6c4 (diff)
downloadvyos-1x-6346a5f1a08e878e51213031ac33dcec08e368cd.tar.gz
vyos-1x-6346a5f1a08e878e51213031ac33dcec08e368cd.zip
Merge pull request #407 from jjakob/accept-ra-fix-T2449
T2449: set 'accept_ra=2' if 'address dhcpv6' or 'ipv6 address autoconf' is set
Diffstat (limited to 'python/vyos/ifconfig')
-rw-r--r--python/vyos/ifconfig/dhcp.py6
-rw-r--r--python/vyos/ifconfig/interface.py21
2 files changed, 20 insertions, 7 deletions
diff --git a/python/vyos/ifconfig/dhcp.py b/python/vyos/ifconfig/dhcp.py
index bf6566c07..57e488cc7 100644
--- a/python/vyos/ifconfig/dhcp.py
+++ b/python/vyos/ifconfig/dhcp.py
@@ -114,9 +114,6 @@ class _DHCPv6 (Control):
render(self.options['options_file'], 'dhcp-client/daemon-options.tmpl', self.options)
render(self.options['conf_file'], 'dhcp-client/ipv6.tmpl', self.options)
- # no longer accept router announcements on this interface
- self._write_sysfs('/proc/sys/net/ipv6/conf/{ifname}/accept_ra'.format(**self.options), 0)
-
return self._cmd('systemctl restart dhclient6@{ifname}.service'.format(**self.options))
def delete(self):
@@ -136,9 +133,6 @@ class _DHCPv6 (Control):
self._cmd('systemctl stop dhclient6@{ifname}.service'.format(**self.options))
- # accept router announcements on this interface
- self._write_sysfs('/proc/sys/net/ipv6/conf/{ifname}/accept_ra'.format(**self.options), 1)
-
# cleanup old config files
for name in ('conf_file', 'options_file', 'pid_file', 'lease_file'):
if os.path.isfile(self.options[name]):
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py
index 7b42e3399..61f2c6482 100644
--- a/python/vyos/ifconfig/interface.py
+++ b/python/vyos/ifconfig/interface.py
@@ -134,8 +134,12 @@ class Interface(Control):
'validate': assert_boolean,
'location': '/proc/sys/net/ipv4/conf/{ifname}/arp_ignore',
},
+ 'ipv6_accept_ra': {
+ 'validate': lambda ara: assert_range(ara,0,3),
+ 'location': '/proc/sys/net/ipv6/conf/{ifname}/accept_ra',
+ },
'ipv6_autoconf': {
- 'validate': lambda fwd: assert_range(fwd,0,2),
+ 'validate': lambda aco: assert_range(aco,0,2),
'location': '/proc/sys/net/ipv6/conf/{ifname}/autoconf',
},
'ipv6_forwarding': {
@@ -409,6 +413,21 @@ class Interface(Control):
"""
return self.set_interface('arp_ignore', arp_ignore)
+ def set_ipv6_accept_ra(self, accept_ra):
+ """
+ Accept Router Advertisements; autoconfigure using them.
+
+ It also determines whether or not to transmit Router Solicitations.
+ If and only if the functional setting is to accept Router
+ Advertisements, Router Solicitations will be transmitted.
+
+ 0 - Do not accept Router Advertisements.
+ 1 - (default) Accept Router Advertisements if forwarding is disabled.
+ 2 - Overrule forwarding behaviour. Accept Router Advertisements even if
+ forwarding is enabled.
+ """
+ return self.set_interface('ipv6_accept_ra', accept_ra)
+
def set_ipv6_autoconf(self, autoconf):
"""
Autoconfigure addresses using Prefix Information in Router