diff options
18 files changed, 63 insertions, 132 deletions
| diff --git a/data/templates/dhcp-server/dhcpd.conf.tmpl b/data/templates/dhcp-server/dhcpd.conf.tmpl index 3ac92d3c9..ed39ff4da 100644 --- a/data/templates/dhcp-server/dhcpd.conf.tmpl +++ b/data/templates/dhcp-server/dhcpd.conf.tmpl @@ -84,8 +84,8 @@ shared-network {{ network | replace('_','-') }} {  {%     if network_config.subnet is defined and network_config.subnet is not none %}  {%       for subnet, subnet_config in network_config.subnet.items() %}      subnet {{ subnet | address_from_cidr }} netmask {{ subnet | netmask_from_cidr }} { -{%         if subnet_config.dns_server is defined and subnet_config.dns_server is not none %} -        option domain-name-servers {{ subnet_config.dns_server | join(', ') }}; +{%         if subnet_config.name_server is defined and subnet_config.name_server is not none %} +        option domain-name-servers {{ subnet_config.name_server | join(', ') }};  {%         endif %}  {%         if subnet_config.domain_search is defined and subnet_config.domain_search is not none %}          option domain-search "{{ subnet_config.domain_search | join('", "') }}"; diff --git a/interface-definitions/dhcp-server.xml.in b/interface-definitions/dhcp-server.xml.in index c0f72dd86..3a1eee60e 100644 --- a/interface-definitions/dhcp-server.xml.in +++ b/interface-definitions/dhcp-server.xml.in @@ -117,19 +117,7 @@                        </constraint>                      </properties>                    </leafNode> -                  <leafNode name="dns-server"> -                    <properties> -                      <help>DNS server IPv4 address</help> -                      <valueHelp> -                        <format>ipv4</format> -                        <description>DNS server IPv4 address</description> -                      </valueHelp> -                      <constraint> -                        <validator name="ipv4-address"/> -                      </constraint> -                      <multi/> -                    </properties> -                  </leafNode> +                  #include <include/name-server-ipv4.xml.i>                    <leafNode name="domain-name">                      <properties>                        <help>Client Domain Name</help> diff --git a/interface-definitions/dhcpv6-server.xml.in b/interface-definitions/dhcpv6-server.xml.in index 95b1e5602..58181872b 100644 --- a/interface-definitions/dhcpv6-server.xml.in +++ b/interface-definitions/dhcpv6-server.xml.in @@ -14,19 +14,7 @@                <help>Additional global parameters for DHCPv6 server</help>              </properties>              <children> -              <leafNode name="name-server"> -                <properties> -                  <help>IPv6 address of a Recursive DNS Server</help> -                  <valueHelp> -                    <format>ipv6</format> -                    <description>IPv6 address of DNS name server</description> -                  </valueHelp> -                  <constraint> -                    <validator name="ipv6-address"/> -                  </constraint> -                  <multi/> -                </properties> -              </leafNode> +              #include <include/name-server-ipv6.xml.i>              </children>            </node>            <leafNode name="preference"> @@ -70,19 +58,7 @@                      </properties>                    </leafNode>                    #include <include/dhcp-server-domain-search.xml.i> -                  <leafNode name="name-server"> -                    <properties> -                      <help>IPv6 address of a Recursive DNS Server</help> -                      <valueHelp> -                        <format>ipv6</format> -                        <description>IPv6 address of DNS name server</description> -                      </valueHelp> -                      <constraint> -                        <validator name="ipv6-address"/> -                      </constraint> -                      <multi/> -                    </properties> -                  </leafNode> +                  #include <include/name-server-ipv6.xml.i>                  </children>                </node>                <tagNode name="subnet"> @@ -194,19 +170,7 @@                        </leafNode>                      </children>                    </node> -                  <leafNode name="name-server"> -                    <properties> -                      <help>IPv6 address of a Recursive DNS Server</help> -                      <valueHelp> -                        <format>ipv6</format> -                        <description>IPv6 address of DNS name server</description> -                      </valueHelp> -                      <constraint> -                        <validator name="ipv6-address"/> -                      </constraint> -                      <multi/> -                    </properties> -                  </leafNode> +                  #include <include/name-server-ipv6.xml.i>                    <leafNode name="nis-domain">                      <properties>                        <help>NIS domain name for client to use</help> diff --git a/interface-definitions/dns-forwarding.xml.in b/interface-definitions/dns-forwarding.xml.in index 06e45ce1e..33cb6223f 100644 --- a/interface-definitions/dns-forwarding.xml.in +++ b/interface-definitions/dns-forwarding.xml.in @@ -148,24 +148,7 @@                  </properties>                  <defaultValue>3600</defaultValue>                </leafNode> -              <leafNode name="name-server"> -                <properties> -                  <help>Domain Name Servers (DNS) addresses [OPTIONAL]</help> -                  <valueHelp> -                    <format>ipv4</format> -                    <description>Domain Name Server (DNS) IPv4 address</description> -                  </valueHelp> -                  <valueHelp> -                    <format>ipv6</format> -                    <description>Domain Name Server (DNS) IPv6 address</description> -                  </valueHelp> -                  <multi/> -                  <constraint> -                    <validator name="ipv4-address"/> -                    <validator name="ipv6-address"/> -                  </constraint> -                </properties> -              </leafNode> +              #include <include/name-server-ipv4-ipv6.xml.i>                <leafNode name="source-address">                  <properties>                    <help>Local addresses from which to send DNS queries</help> diff --git a/interface-definitions/include/accel-ppp/name-server.xml.i b/interface-definitions/include/name-server-ipv4-ipv6.xml.i index e744b384f..14973234b 100644 --- a/interface-definitions/include/accel-ppp/name-server.xml.i +++ b/interface-definitions/include/name-server-ipv4-ipv6.xml.i @@ -1,7 +1,7 @@ -<!-- include start from accel-ppp/name-server.xml.i --> +<!-- include start from name-server-ipv4-ipv6.xml.i -->  <leafNode name="name-server">    <properties> -    <help>Domain Name Server (DNS) propagated to client</help> +    <help>Domain Name Servers (DNS) addresses</help>      <valueHelp>        <format>ipv4</format>        <description>Domain Name Server (DNS) IPv4 address</description> diff --git a/interface-definitions/include/name-server-ipv4.xml.i b/interface-definitions/include/name-server-ipv4.xml.i new file mode 100644 index 000000000..0cf884e03 --- /dev/null +++ b/interface-definitions/include/name-server-ipv4.xml.i @@ -0,0 +1,15 @@ +<!-- include start from name-server-ipv4.xml.i --> +<leafNode name="name-server"> +  <properties> +    <help>Domain Name Servers (DNS) addresses</help> +    <valueHelp> +      <format>ipv4</format> +      <description>Domain Name Server (DNS) IPv4 address</description> +    </valueHelp> +    <constraint> +      <validator name="ipv4-address"/> +    </constraint> +    <multi/> +  </properties> +</leafNode> +<!-- include end --> diff --git a/interface-definitions/include/name-server-ipv6.xml.i b/interface-definitions/include/name-server-ipv6.xml.i new file mode 100644 index 000000000..d4517c4c6 --- /dev/null +++ b/interface-definitions/include/name-server-ipv6.xml.i @@ -0,0 +1,15 @@ +<!-- include start from name-server-ipv6.xml.i --> +<leafNode name="name-server"> +  <properties> +    <help>Domain Name Servers (DNS) addresses</help> +    <valueHelp> +      <format>ipv6</format> +      <description>Domain Name Server (DNS) IPv6 address</description> +    </valueHelp> +    <constraint> +      <validator name="ipv6-address"/> +    </constraint> +    <multi/> +  </properties> +</leafNode> +<!-- include end --> diff --git a/interface-definitions/interfaces-openvpn.xml.in b/interface-definitions/interfaces-openvpn.xml.in index 3ad367900..2ecac78e2 100644 --- a/interface-definitions/interfaces-openvpn.xml.in +++ b/interface-definitions/interfaces-openvpn.xml.in @@ -554,23 +554,7 @@                    </constraint>                  </properties>                </leafNode> -              <leafNode name="name-server"> -                <properties> -                  <help>Domain Name Server (DNS)</help> -                  <valueHelp> -                    <format>ipv4</format> -                    <description>DNS server IPv4 address</description> -                  </valueHelp> -                  <valueHelp> -                    <format>ipv6</format> -                    <description>DNS server IPv6 address</description> -                  </valueHelp> -                  <constraint> -                    <validator name="ip-address"/> -                  </constraint> -                  <multi/> -                </properties> -              </leafNode> +              #include <include/name-server-ipv4-ipv6.xml.i>                <tagNode name="push-route">                  <properties>                    <help>Route to be pushed to all clients</help> diff --git a/interface-definitions/service_ipoe-server.xml.in b/interface-definitions/service_ipoe-server.xml.in index 7c575ba77..b19acab56 100644 --- a/interface-definitions/service_ipoe-server.xml.in +++ b/interface-definitions/service_ipoe-server.xml.in @@ -111,7 +111,7 @@                </leafNode>              </children>            </tagNode> -          #include <include/accel-ppp/name-server.xml.i> +          #include <include/name-server-ipv4-ipv6.xml.i>            #include <include/accel-ppp/client-ipv6-pool.xml.i>            <node name="authentication">              <properties> diff --git a/interface-definitions/service_pppoe-server.xml.in b/interface-definitions/service_pppoe-server.xml.in index 6fb0bf9f4..188aed6c4 100644 --- a/interface-definitions/service_pppoe-server.xml.in +++ b/interface-definitions/service_pppoe-server.xml.in @@ -59,7 +59,7 @@              </children>            </node>            #include <include/accel-ppp/client-ipv6-pool.xml.i> -          #include <include/accel-ppp/name-server.xml.i> +          #include <include/name-server-ipv4-ipv6.xml.i>            <tagNode name="interface">              <properties>                <help>interface(s) to listen on</help> diff --git a/interface-definitions/service_router-advert.xml.in b/interface-definitions/service_router-advert.xml.in index e18b27f1b..0f4009f5c 100644 --- a/interface-definitions/service_router-advert.xml.in +++ b/interface-definitions/service_router-advert.xml.in @@ -135,19 +135,7 @@                    </leafNode>                  </children>                </node> -              <leafNode name="name-server"> -                <properties> -                  <help>IPv6 address of recursive DNS server</help> -                  <valueHelp> -                    <format>ipv6</format> -                    <description>IPv6 address of DNS name server</description> -                  </valueHelp> -                  <constraint> -                    <validator name="ipv6-address"/> -                  </constraint> -                  <multi/> -                </properties> -              </leafNode> +              #include <include/name-server-ipv6.xml.i>                <leafNode name="other-config-flag">                  <properties>                    <help>Hosts use the administered (stateful) protocol for autoconfiguration of other (non-address) information</help> diff --git a/interface-definitions/vpn_ipsec.xml.in b/interface-definitions/vpn_ipsec.xml.in index 4120232ea..164ba6618 100644 --- a/interface-definitions/vpn_ipsec.xml.in +++ b/interface-definitions/vpn_ipsec.xml.in @@ -884,8 +884,7 @@                        </constraint>                      </properties>                    </leafNode> -                  <!-- Include Accel-PPP definition here, maybe time for a rename? --> -                  #include <include/accel-ppp/name-server.xml.i> +                  #include <include/name-server-ipv4-ipv6.xml.i>                  </children>                </tagNode>                #include <include/radius-server-ipv4.xml.i> diff --git a/interface-definitions/vpn_l2tp.xml.in b/interface-definitions/vpn_l2tp.xml.in index 6d556d0bb..cbd5e38e7 100644 --- a/interface-definitions/vpn_l2tp.xml.in +++ b/interface-definitions/vpn_l2tp.xml.in @@ -23,7 +23,7 @@                  </properties>                </leafNode>                #include <include/accel-ppp/gateway-address.xml.i> -              #include <include/accel-ppp/name-server.xml.i> +              #include <include/name-server-ipv4-ipv6.xml.i>                <node name="lns">                  <properties>                    <help>L2TP Network Server (LNS)</help> diff --git a/interface-definitions/vpn_openconnect.xml.in b/interface-definitions/vpn_openconnect.xml.in index a33ff67ea..0db5e79d0 100644 --- a/interface-definitions/vpn_openconnect.xml.in +++ b/interface-definitions/vpn_openconnect.xml.in @@ -170,7 +170,7 @@                    </leafNode>                  </children>                </node> -              #include <include/accel-ppp/name-server.xml.i> +              #include <include/name-server-ipv4-ipv6.xml.i>              </children>            </node>        </children> diff --git a/interface-definitions/vpn_pptp.xml.in b/interface-definitions/vpn_pptp.xml.in index dab317f68..0d1690013 100644 --- a/interface-definitions/vpn_pptp.xml.in +++ b/interface-definitions/vpn_pptp.xml.in @@ -22,19 +22,7 @@                    </constraint>                  </properties>                </leafNode> -              <leafNode name="name-server"> -                <properties> -                  <help>Domain Name Server (DNS) propagated to client</help> -                  <valueHelp> -                    <format>ipv4</format> -                    <description>Domain Name Server (DNS) IPv4 address</description> -                  </valueHelp> -                  <constraint> -                    <validator name="ipv4-address"/> -                  </constraint> -                  <multi/> -                </properties> -              </leafNode> +              #include <include/name-server-ipv4.xml.i>                #include <include/accel-ppp/wins-server.xml.i>                <node name="client-ip-pool">                  <properties> diff --git a/interface-definitions/vpn_sstp.xml.in b/interface-definitions/vpn_sstp.xml.in index 5cd331d7f..9901a0cdf 100644 --- a/interface-definitions/vpn_sstp.xml.in +++ b/interface-definitions/vpn_sstp.xml.in @@ -27,7 +27,7 @@            </node>            #include <include/interface/mtu-68-1500.xml.i>            #include <include/accel-ppp/gateway-address.xml.i> -          #include <include/accel-ppp/name-server.xml.i> +          #include <include/name-server-ipv4-ipv6.xml.i>            <node name="client-ip-pool">              <properties>                <help>Client IP pools and gateway setting</help> diff --git a/smoketest/scripts/cli/test_service_dhcp-server.py b/smoketest/scripts/cli/test_service_dhcp-server.py index 40977bb04..37e016778 100755 --- a/smoketest/scripts/cli/test_service_dhcp-server.py +++ b/smoketest/scripts/cli/test_service_dhcp-server.py @@ -1,6 +1,6 @@  #!/usr/bin/env python3  # -# Copyright (C) 2020 VyOS maintainers and contributors +# Copyright (C) 2020-2021 VyOS maintainers and contributors  #  # This program is free software; you can redistribute it and/or modify  # it under the terms of the GNU General Public License version 2 or later as @@ -59,8 +59,8 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          pool = base_path + ['shared-network-name', shared_net_name, 'subnet', subnet]          # we use the first subnet IP address as default gateway          self.cli_set(pool + ['default-router', router]) -        self.cli_set(pool + ['dns-server', dns_1]) -        self.cli_set(pool + ['dns-server', dns_2]) +        self.cli_set(pool + ['name-server', dns_1]) +        self.cli_set(pool + ['name-server', dns_2])          self.cli_set(pool + ['domain-name', domain_name])          # check validate() - No DHCP address range or active static-mapping set @@ -108,8 +108,8 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          pool = base_path + ['shared-network-name', shared_net_name, 'subnet', subnet]          # we use the first subnet IP address as default gateway          self.cli_set(pool + ['default-router', router]) -        self.cli_set(pool + ['dns-server', dns_1]) -        self.cli_set(pool + ['dns-server', dns_2]) +        self.cli_set(pool + ['name-server', dns_1]) +        self.cli_set(pool + ['name-server', dns_2])          self.cli_set(pool + ['domain-name', domain_name])          self.cli_set(pool + ['ip-forwarding'])          self.cli_set(pool + ['smtp-server', smtp_server]) @@ -201,8 +201,8 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          pool = base_path + ['shared-network-name', shared_net_name, 'subnet', subnet]          # we use the first subnet IP address as default gateway          self.cli_set(pool + ['default-router', router]) -        self.cli_set(pool + ['dns-server', dns_1]) -        self.cli_set(pool + ['dns-server', dns_2]) +        self.cli_set(pool + ['name-server', dns_1]) +        self.cli_set(pool + ['name-server', dns_2])          self.cli_set(pool + ['domain-name', domain_name])          # check validate() - No DHCP address range or active static-mapping set @@ -261,7 +261,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):              pool = base_path + ['shared-network-name', shared_net_name, 'subnet', subnet]              # we use the first subnet IP address as default gateway              self.cli_set(pool + ['default-router', router]) -            self.cli_set(pool + ['dns-server', dns_1]) +            self.cli_set(pool + ['name-server', dns_1])              self.cli_set(pool + ['domain-name', domain_name])              self.cli_set(pool + ['lease', lease_time]) diff --git a/src/migration-scripts/dhcp-server/5-to-6 b/src/migration-scripts/dhcp-server/5-to-6 index 4cd2ec07a..7f447ac17 100755 --- a/src/migration-scripts/dhcp-server/5-to-6 +++ b/src/migration-scripts/dhcp-server/5-to-6 @@ -14,6 +14,8 @@  # You should have received a copy of the GNU General Public License  # along with this program.  If not, see <http://www.gnu.org/licenses/>. +# T1968: allow multiple static-routes to be configured +# T3838: rename dns-server -> name-server  import sys  from vyos.configtree import ConfigTree @@ -45,6 +47,7 @@ for network in config.list_nodes(base):      for subnet in config.list_nodes(base_network + ['subnet']):          base_subnet = base_network + ['subnet', subnet] +        # T1968: allow multiple static-routes to be configured          if config.exists(base_subnet + ['static-route']):              prefix = config.return_value(base_subnet + ['static-route', 'destination-subnet'])              router = config.return_value(base_subnet + ['static-route', 'router']) @@ -53,6 +56,10 @@ for network in config.list_nodes(base):              config.set(base_subnet + ['static-route', prefix, 'next-hop'], value=router)              config.set_tag(base_subnet + ['static-route']) +        # T3838: rename dns-server -> name-server +        if config.exists(base_subnet + ['dns-server']): +            config.rename(base_subnet + ['dns-server'], 'name-server') +  try:      with open(file_name, 'w') as f:          f.write(config.to_string()) | 
