summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Stepler <brandon@stepler.net>2021-06-30 13:10:00 -0400
committerBrandon Stepler <brandon@stepler.net>2021-06-30 13:10:00 -0400
commit2318c874c4ec43076c2664e473f7273928d9f2a6 (patch)
tree9c766cc17006abfe229e8f06de3e700bf59f9a85
parent31bbac481c53a2cf86d593136218b60037fb4b41 (diff)
downloadvyos-1x-2318c874c4ec43076c2664e473f7273928d9f2a6.tar.gz
vyos-1x-2318c874c4ec43076c2664e473f7273928d9f2a6.zip
dhcpdv6: T3658: add support for dhcpdv6 fixed-prefix6
-rw-r--r--data/templates/dhcp-server/dhcpdv6.conf.tmpl3
-rw-r--r--interface-definitions/dhcpv6-server.xml.in12
-rwxr-xr-xsmoketest/scripts/cli/test_service_dhcpv6-server.py3
3 files changed, 18 insertions, 0 deletions
diff --git a/data/templates/dhcp-server/dhcpdv6.conf.tmpl b/data/templates/dhcp-server/dhcpdv6.conf.tmpl
index 8d653ff72..45d629928 100644
--- a/data/templates/dhcp-server/dhcpdv6.conf.tmpl
+++ b/data/templates/dhcp-server/dhcpdv6.conf.tmpl
@@ -107,6 +107,9 @@ shared-network {{ network | replace('_','-') }} {
{% if host_config.ipv6_address is defined and host_config.ipv6_address is not none %}
fixed-address6 {{ host_config.ipv6_address }};
{% endif %}
+{% if host_config.ipv6_prefix is defined and host_config.ipv6_prefix is not none %}
+ fixed-prefix6 {{ host_config.ipv6_prefix }};
+{% endif %}
}
{% endfor %}
{% endif %}
diff --git a/interface-definitions/dhcpv6-server.xml.in b/interface-definitions/dhcpv6-server.xml.in
index a3cca06da..5d6c64685 100644
--- a/interface-definitions/dhcpv6-server.xml.in
+++ b/interface-definitions/dhcpv6-server.xml.in
@@ -360,6 +360,18 @@
</constraint>
</properties>
</leafNode>
+ <leafNode name="ipv6-prefix">
+ <properties>
+ <help>Client IPv6 prefix for this static mapping</help>
+ <valueHelp>
+ <format>ipv6net</format>
+ <description>IPv6 prefix for this static mapping</description>
+ </valueHelp>
+ <constraint>
+ <validator name="ipv6-prefix"/>
+ </constraint>
+ </properties>
+ </leafNode>
</children>
</tagNode>
</children>
diff --git a/smoketest/scripts/cli/test_service_dhcpv6-server.py b/smoketest/scripts/cli/test_service_dhcpv6-server.py
index a939aa003..3f9564e59 100755
--- a/smoketest/scripts/cli/test_service_dhcpv6-server.py
+++ b/smoketest/scripts/cli/test_service_dhcpv6-server.py
@@ -86,6 +86,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):
cid = '00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:{}'.format(client_base)
self.cli_set(pool + ['static-mapping', client, 'identifier', cid])
self.cli_set(pool + ['static-mapping', client, 'ipv6-address', inc_ip(subnet, client_base)])
+ self.cli_set(pool + ['static-mapping', client, 'ipv6-prefix', inc_ip(subnet, client_base << 64) + '/64'])
client_base += 1
# commit changes
@@ -114,8 +115,10 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):
for client in ['client1', 'client2', 'client3']:
cid = '00:01:00:01:12:34:56:78:aa:bb:cc:dd:ee:{}'.format(client_base)
ip = inc_ip(subnet, client_base)
+ prefix = inc_ip(subnet, client_base << 64) + '/64'
self.assertIn(f'host {shared_net_name}_{client}' + ' {', config)
self.assertIn(f'fixed-address6 {ip};', config)
+ self.assertIn(f'fixed-prefix6 {prefix};', config)
self.assertIn(f'host-identifier option dhcp6.client-id {cid};', config)
client_base += 1