summaryrefslogtreecommitdiff
path: root/src/conf_mode
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-05-26 20:54:07 +0200
committerChristian Poessinger <christian@poessinger.com>2020-05-26 20:54:07 +0200
commit825059e83237dd389d461257e1b46625084702df (patch)
tree47d50cde1195279ab5b6367b84ff60568620262a /src/conf_mode
parent62fd70e83c2f147f84f8fb3def5b384d4f56695d (diff)
parent8ff6d2ed6025fb113a180e3c23be83dac7169658 (diff)
downloadvyos-1x-825059e83237dd389d461257e1b46625084702df.tar.gz
vyos-1x-825059e83237dd389d461257e1b46625084702df.zip
Merge branch 'dhcpv6-pd-t2506' of github.com:c-po/vyos-1x into current
* 'dhcpv6-pd-t2506' of github.com:c-po/vyos-1x: dhcpv6-pd: T2506: use common dictionary definition for config parameters dhcpv6-pd: T2506: add option to request specific prefix length dhcpv6-pd: pppoe: T2506: restructure CLI
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-xsrc/conf_mode/interfaces-bonding.py7
-rwxr-xr-xsrc/conf_mode/interfaces-bridge.py7
-rwxr-xr-xsrc/conf_mode/interfaces-ethernet.py7
-rwxr-xr-xsrc/conf_mode/interfaces-pppoe.py28
-rwxr-xr-xsrc/conf_mode/interfaces-pseudo-ethernet.py7
-rwxr-xr-xsrc/conf_mode/interfaces-wireless.py7
6 files changed, 44 insertions, 19 deletions
diff --git a/src/conf_mode/interfaces-bonding.py b/src/conf_mode/interfaces-bonding.py
index bdca9d170..ed9b754c3 100755
--- a/src/conf_mode/interfaces-bonding.py
+++ b/src/conf_mode/interfaces-bonding.py
@@ -299,8 +299,11 @@ def apply(bond):
if bond['dhcpv6_temporary']:
b.dhcp.v6.options['dhcpv6_temporary'] = True
- if bond['dhcpv6_pd']:
- b.dhcp.v6.options['dhcpv6_pd'] = bond['dhcpv6_pd']
+ if bond['dhcpv6_pd_length']:
+ b.dhcp.v6.options['dhcpv6_pd_length'] = bond['dhcpv6_pd_length']
+
+ if bond['dhcpv6_pd_interfaces']:
+ b.dhcp.v6.options['dhcpv6_pd_interfaces'] = bond['dhcpv6_pd_interfaces']
# ignore link state changes
b.set_link_detect(bond['disable_link_detect'])
diff --git a/src/conf_mode/interfaces-bridge.py b/src/conf_mode/interfaces-bridge.py
index 3ff339f0f..adfa81c74 100755
--- a/src/conf_mode/interfaces-bridge.py
+++ b/src/conf_mode/interfaces-bridge.py
@@ -321,8 +321,11 @@ def apply(bridge):
if bridge['dhcpv6_temporary']:
br.dhcp.v6.options['dhcpv6_temporary'] = True
- if bridge['dhcpv6_pd']:
- br.dhcp.v6.options['dhcpv6_pd'] = br['dhcpv6_pd']
+ if bridge['dhcpv6_pd_length']:
+ br.dhcp.v6.options['dhcpv6_pd_length'] = br['dhcpv6_pd_length']
+
+ if bridge['dhcpv6_pd_interfaces']:
+ br.dhcp.v6.options['dhcpv6_pd_interfaces'] = br['dhcpv6_pd_interfaces']
# assign/remove VRF
br.set_vrf(bridge['vrf'])
diff --git a/src/conf_mode/interfaces-ethernet.py b/src/conf_mode/interfaces-ethernet.py
index 0d73a30f1..e9cab4be7 100755
--- a/src/conf_mode/interfaces-ethernet.py
+++ b/src/conf_mode/interfaces-ethernet.py
@@ -201,8 +201,11 @@ def apply(eth):
if eth['dhcpv6_temporary']:
e.dhcp.v6.options['dhcpv6_temporary'] = True
- if eth['dhcpv6_pd']:
- e.dhcp.v6.options['dhcpv6_pd'] = eth['dhcpv6_pd']
+ if eth['dhcpv6_pd_length']:
+ e.dhcp.v6.options['dhcpv6_pd_length'] = eth['dhcpv6_pd_length']
+
+ if eth['dhcpv6_pd_interfaces']:
+ e.dhcp.v6.options['dhcpv6_pd_interfaces'] = eth['dhcpv6_pd_interfaces']
# ignore link state changes
e.set_link_detect(eth['disable_link_detect'])
diff --git a/src/conf_mode/interfaces-pppoe.py b/src/conf_mode/interfaces-pppoe.py
index 6cde850c9..08c129bf0 100755
--- a/src/conf_mode/interfaces-pppoe.py
+++ b/src/conf_mode/interfaces-pppoe.py
@@ -21,13 +21,15 @@ from copy import deepcopy
from netifaces import interfaces
from vyos.config import Config
+from vyos.configdict import dhcpv6_pd_default_data
from vyos.ifconfig import Interface
+from vyos.template import render
from vyos.util import chown, chmod_755, call
from vyos import ConfigError
-from vyos.template import render
default_config_data = {
+ **dhcpv6_pd_default_data,
'access_concentrator': '',
'auth_username': '',
'auth_password': '',
@@ -36,7 +38,6 @@ default_config_data = {
'deleted': False,
'description': '\0',
'disable': False,
- 'dhcpv6_pd': [],
'intf': '',
'idle_timeout': '',
'ipv6_autoconf': False,
@@ -137,15 +138,24 @@ def get_config():
if conf.exists('vrf'):
pppoe['vrf'] = conf.return_value(['vrf'])
- if conf.exists(['dhcpv6-options', 'delegate']):
- for interface in conf.list_nodes(['dhcpv6-options', 'delegate']):
+ if conf.exists(['dhcpv6-options', 'prefix-delegation']):
+ dhcpv6_pd_path = base_path + [pppoe['intf'],
+ 'dhcpv6-options', 'prefix-delegation']
+ conf.set_level(dhcpv6_pd_path)
+
+ # retriebe DHCPv6-PD prefix helper length as some ISPs only hand out a
+ # /64 by default (https://phabricator.vyos.net/T2506)
+ if conf.exists(['length']):
+ pppoe['dhcpv6_pd_length'] = conf.return_value(['length'])
+
+ for interface in conf.list_nodes(['interface']):
+ conf.set_level(dhcpv6_pd_path + ['interface', interface])
pd = {
'ifname': interface,
'sla_id': '',
'sla_len': '',
'if_id': ''
}
- conf.set_level(base_path + [pppoe['intf'], 'dhcpv6-options', 'delegate', interface])
if conf.exists(['sla-id']):
pd['sla_id'] = conf.return_value(['sla-id'])
@@ -153,10 +163,10 @@ def get_config():
if conf.exists(['sla-len']):
pd['sla_len'] = conf.return_value(['sla-len'])
- if conf.exists(['interface-id']):
- pd['if_id'] = conf.return_value(['interface-id'])
+ if conf.exists(['address']):
+ pd['if_id'] = conf.return_value(['address'])
- pppoe['dhcpv6_pd'].append(pd)
+ pppoe['dhcpv6_pd_interfaces'].append(pd)
return pppoe
@@ -223,7 +233,7 @@ def generate(pppoe):
render(script_pppoe_ipv6_up, 'pppoe/ipv6-up.script.tmpl',
pppoe, trim_blocks=True, permission=0o755)
- if len(pppoe['dhcpv6_pd']) > 0:
+ if len(pppoe['dhcpv6_pd_interfaces']) > 0:
# ipv6.tmpl relies on ifname - this should be made consitent in the
# future better then double key-ing the same value
pppoe['ifname'] = intf
diff --git a/src/conf_mode/interfaces-pseudo-ethernet.py b/src/conf_mode/interfaces-pseudo-ethernet.py
index 3e036a753..c09df15e8 100755
--- a/src/conf_mode/interfaces-pseudo-ethernet.py
+++ b/src/conf_mode/interfaces-pseudo-ethernet.py
@@ -171,8 +171,11 @@ def apply(peth):
if peth['dhcpv6_temporary']:
p.dhcp.v6.options['dhcpv6_temporary'] = True
- if peth['dhcpv6_pd']:
- p.dhcp.v6.options['dhcpv6_pd'] = peth['dhcpv6_pd']
+ if peth['dhcpv6_pd_length']:
+ p.dhcp.v6.options['dhcpv6_pd_length'] = peth['dhcpv6_pd_length']
+
+ if peth['dhcpv6_pd_interfaces']:
+ p.dhcp.v6.options['dhcpv6_pd_interfaces'] = peth['dhcpv6_pd_interfaces']
# ignore link state changes
p.set_link_detect(peth['disable_link_detect'])
diff --git a/src/conf_mode/interfaces-wireless.py b/src/conf_mode/interfaces-wireless.py
index 0fa20c5f4..8a2736a66 100755
--- a/src/conf_mode/interfaces-wireless.py
+++ b/src/conf_mode/interfaces-wireless.py
@@ -591,8 +591,11 @@ def apply(wifi):
if wifi['dhcpv6_temporary']:
w.dhcp.v6.options['dhcpv6_temporary'] = True
- if wifi['dhcpv6_pd']:
- w.dhcp.v6.options['dhcpv6_pd'] = wifi['dhcpv6_pd']
+ if wifi['dhcpv6_pd_length']:
+ w.dhcp.v6.options['dhcpv6_pd_length'] = wifi['dhcpv6_pd_length']
+
+ if wifi['dhcpv6_pd_interfaces']:
+ w.dhcp.v6.options['dhcpv6_pd_interfaces'] = wifi['dhcpv6_pd_interfaces']
# ignore link state changes
w.set_link_detect(wifi['disable_link_detect'])