diff options
25 files changed, 67 insertions, 46 deletions
| diff --git a/data/templates/frr/ospfd.frr.j2 b/data/templates/frr/ospfd.frr.j2 index 0baff2d72..8c4a81c57 100644 --- a/data/templates/frr/ospfd.frr.j2 +++ b/data/templates/frr/ospfd.frr.j2 @@ -84,11 +84,13 @@ router ospf {{ 'vrf ' ~ vrf if vrf is vyos_defined }}  {%         endfor %}  {%         if area_config.range is vyos_defined %}  {%             for range, range_config in area_config.range.items() %} -{%                 if range_config.cost is vyos_defined %} - area {{ area_id }} range {{ range }} cost {{ range_config.cost }} -{%                 endif %}  {%                 if range_config.not_advertise is vyos_defined %}   area {{ area_id }} range {{ range }} not-advertise +{%                 else %} + area {{ area_id }} range {{ range }} +{%                 endif %} +{%                 if range_config.cost is vyos_defined %} + area {{ area_id }} range {{ range }} cost {{ range_config.cost }}  {%                 endif %}  {%                 if range_config.substitute is vyos_defined %}   area {{ area_id }} range {{ range }} substitute {{ range_config.substitute }} diff --git a/data/templates/ipsec/swanctl/peer.j2 b/data/templates/ipsec/swanctl/peer.j2 index 837fa263c..9d95271fe 100644 --- a/data/templates/ipsec/swanctl/peer.j2 +++ b/data/templates/ipsec/swanctl/peer.j2 @@ -45,11 +45,7 @@  {% endif %}          }          remote { -{% if peer_conf.authentication.remote_id is vyos_defined %}              id = "{{ peer_conf.authentication.remote_id }}" -{% else %} -            id = "{{ peer }}" -{% endif %}              auth = {{ 'psk' if peer_conf.authentication.mode == 'pre-shared-secret' else 'pubkey' }}  {% if peer_conf.authentication.mode == 'rsa' %}              pubkeys = {{ peer_conf.authentication.rsa.remote_key }}.pem diff --git a/interface-definitions/vpn-ipsec.xml.in b/interface-definitions/vpn-ipsec.xml.in index 64966b540..fd74a51d7 100644 --- a/interface-definitions/vpn-ipsec.xml.in +++ b/interface-definitions/vpn-ipsec.xml.in @@ -957,6 +957,7 @@                              <description>ID used for peer authentication</description>                            </valueHelp>                          </properties> +                        <defaultValue>%any</defaultValue>                        </leafNode>                        <leafNode name="use-x509-id">                          <properties> diff --git a/op-mode-definitions/show-interfaces-bonding.xml.in b/op-mode-definitions/show-interfaces-bonding.xml.in index 6908153dd..c41e7bd5f 100644 --- a/op-mode-definitions/show-interfaces-bonding.xml.in +++ b/op-mode-definitions/show-interfaces-bonding.xml.in @@ -11,13 +11,13 @@                  <path>interfaces bonding</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=bonding</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified bonding interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=bonding</command>                </leafNode>                <leafNode name="detail">                  <properties> @@ -38,13 +38,13 @@                      <path>interfaces bonding ${COMP_WORDS[3]} vif</path>                    </completionHelp>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6" --intf_type=bonding</command>                  <children>                    <leafNode name="brief">                      <properties>                        <help>Show summary of specified virtual network interface (vif) information</help>                      </properties> -                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6"</command> +                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6" --intf_type=bonding</command>                    </leafNode>                  </children>                </tagNode> diff --git a/op-mode-definitions/show-interfaces-bridge.xml.in b/op-mode-definitions/show-interfaces-bridge.xml.in index b950c3a17..22cd3ee67 100644 --- a/op-mode-definitions/show-interfaces-bridge.xml.in +++ b/op-mode-definitions/show-interfaces-bridge.xml.in @@ -11,13 +11,13 @@                  <path>interfaces bridge</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=bridge</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified bridge interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=bridge</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-dummy.xml.in b/op-mode-definitions/show-interfaces-dummy.xml.in index 398e00636..958d3483d 100644 --- a/op-mode-definitions/show-interfaces-dummy.xml.in +++ b/op-mode-definitions/show-interfaces-dummy.xml.in @@ -11,13 +11,13 @@                  <path>interfaces dummy</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=dummy</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified dummy interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=dummy</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-ethernet.xml.in b/op-mode-definitions/show-interfaces-ethernet.xml.in index 40d4adbb2..81759c2b6 100644 --- a/op-mode-definitions/show-interfaces-ethernet.xml.in +++ b/op-mode-definitions/show-interfaces-ethernet.xml.in @@ -11,13 +11,13 @@                  <path>interfaces ethernet</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=ethernet</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified ethernet interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=ethernet</command>                </leafNode>                <leafNode name="identify">                  <properties> @@ -58,13 +58,13 @@                      <path>interfaces ethernet ${COMP_WORDS[3]} vif</path>                    </completionHelp>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6" --intf_type=ethernet</command>                  <children>                    <leafNode name="brief">                      <properties>                        <help>Show summary of specified virtual network interface (vif) information</help>                      </properties> -                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6"</command> +                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6" --intf_type=ethernet</command>                    </leafNode>                  </children>                </tagNode> diff --git a/op-mode-definitions/show-interfaces-geneve.xml.in b/op-mode-definitions/show-interfaces-geneve.xml.in index be3084af3..3cf45878d 100644 --- a/op-mode-definitions/show-interfaces-geneve.xml.in +++ b/op-mode-definitions/show-interfaces-geneve.xml.in @@ -11,13 +11,13 @@                  <path>interfaces geneve</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=geneve</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified GENEVE interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=geneve</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-input.xml.in b/op-mode-definitions/show-interfaces-input.xml.in index 1f8505160..5d93dcee6 100644 --- a/op-mode-definitions/show-interfaces-input.xml.in +++ b/op-mode-definitions/show-interfaces-input.xml.in @@ -11,13 +11,13 @@                  <path>interfaces input</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=input</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified input interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=input</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-l2tpv3.xml.in b/op-mode-definitions/show-interfaces-l2tpv3.xml.in index ff08b8266..713e36dac 100644 --- a/op-mode-definitions/show-interfaces-l2tpv3.xml.in +++ b/op-mode-definitions/show-interfaces-l2tpv3.xml.in @@ -11,13 +11,13 @@                  <path>interfaces l2tpv3</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=l2tpv3</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified L2TPv3 interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=l2tpv3</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-loopback.xml.in b/op-mode-definitions/show-interfaces-loopback.xml.in index 9919bf32b..a24151cc3 100644 --- a/op-mode-definitions/show-interfaces-loopback.xml.in +++ b/op-mode-definitions/show-interfaces-loopback.xml.in @@ -11,13 +11,13 @@                  <path>interfaces loopback</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=loopback</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified Loopback interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=loopback</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-pppoe.xml.in b/op-mode-definitions/show-interfaces-pppoe.xml.in index 80bfd00ff..a34473148 100644 --- a/op-mode-definitions/show-interfaces-pppoe.xml.in +++ b/op-mode-definitions/show-interfaces-pppoe.xml.in @@ -11,7 +11,7 @@                  <path>interfaces pppoe</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=pppoe</command>              <children>                <leafNode name="log">                  <properties> diff --git a/op-mode-definitions/show-interfaces-pseudo-ethernet.xml.in b/op-mode-definitions/show-interfaces-pseudo-ethernet.xml.in index 0c00dbdd0..cb62639ee 100644 --- a/op-mode-definitions/show-interfaces-pseudo-ethernet.xml.in +++ b/op-mode-definitions/show-interfaces-pseudo-ethernet.xml.in @@ -11,13 +11,13 @@                  <path>interfaces pseudo-ethernet</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=pseudo-ethernet</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified pseudo-ethernet/MACvlan interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=pseudo-ethernet</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-sstpc.xml.in b/op-mode-definitions/show-interfaces-sstpc.xml.in index c473f9822..a619a9fd2 100644 --- a/op-mode-definitions/show-interfaces-sstpc.xml.in +++ b/op-mode-definitions/show-interfaces-sstpc.xml.in @@ -11,7 +11,7 @@                  <path>interfaces sstpc</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=sstpc</command>              <children>                <leafNode name="log">                  <properties> diff --git a/op-mode-definitions/show-interfaces-tunnel.xml.in b/op-mode-definitions/show-interfaces-tunnel.xml.in index 4af90b813..10e10e655 100644 --- a/op-mode-definitions/show-interfaces-tunnel.xml.in +++ b/op-mode-definitions/show-interfaces-tunnel.xml.in @@ -11,13 +11,13 @@                  <path>interfaces tunnel</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=tunnel</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified tunnel interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=tunnel</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-virtual-ethernet.xml.in b/op-mode-definitions/show-interfaces-virtual-ethernet.xml.in index 2aa71c687..c743492fb 100644 --- a/op-mode-definitions/show-interfaces-virtual-ethernet.xml.in +++ b/op-mode-definitions/show-interfaces-virtual-ethernet.xml.in @@ -11,13 +11,13 @@                  <path>interfaces virtual-ethernet</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=virtual-ethernet</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified virtual-ethernet interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=virtual-ethernet</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-vti.xml.in b/op-mode-definitions/show-interfaces-vti.xml.in index 195e1d5da..d532894b7 100644 --- a/op-mode-definitions/show-interfaces-vti.xml.in +++ b/op-mode-definitions/show-interfaces-vti.xml.in @@ -11,13 +11,13 @@                  <path>interfaces vti</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=vti</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified vti interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=vti</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-vxlan.xml.in b/op-mode-definitions/show-interfaces-vxlan.xml.in index a1d01a6af..fde832551 100644 --- a/op-mode-definitions/show-interfaces-vxlan.xml.in +++ b/op-mode-definitions/show-interfaces-vxlan.xml.in @@ -11,13 +11,13 @@                  <path>interfaces vxlan</path>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=vxlan</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified VXLAN interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=vxlan</command>                </leafNode>              </children>            </tagNode> diff --git a/op-mode-definitions/show-interfaces-wireguard.xml.in b/op-mode-definitions/show-interfaces-wireguard.xml.in index 55879cfff..eba8de568 100644 --- a/op-mode-definitions/show-interfaces-wireguard.xml.in +++ b/op-mode-definitions/show-interfaces-wireguard.xml.in @@ -11,7 +11,7 @@                  <script>${vyos_completion_dir}/list_interfaces.py --type wireguard</script>                </completionHelp>              </properties> -	        <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +	        <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=wireguard</command>              <children>                <leafNode name="allowed-ips">                  <properties> diff --git a/op-mode-definitions/show-interfaces-wireless.xml.in b/op-mode-definitions/show-interfaces-wireless.xml.in index 7ae2c8ce4..b0a272225 100644 --- a/op-mode-definitions/show-interfaces-wireless.xml.in +++ b/op-mode-definitions/show-interfaces-wireless.xml.in @@ -31,13 +31,13 @@                  <script>${vyos_completion_dir}/list_interfaces.py --type wireless</script>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=wireless</command>              <children>                <leafNode name="brief">                  <properties>                    <help>Show summary of the specified wireless interface information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4" --intf_type=wireless</command>                </leafNode>                <node name="scan">                  <properties> @@ -63,13 +63,13 @@                  <properties>                    <help>Show specified virtual network interface (vif) information</help>                  </properties> -                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6"</command> +                <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4.$6" --intf_type=wireless</command>                  <children>                    <leafNode name="brief">                      <properties>                        <help>Show summary of specified virtual network interface (vif) information</help>                      </properties> -                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6"</command> +                    <command>${vyos_op_scripts_dir}/interfaces.py show_summary --intf_name="$4.$6" --intf_type=wireless</command>                    </leafNode>                  </children>                </tagNode> diff --git a/op-mode-definitions/show-interfaces-wwan.xml.in b/op-mode-definitions/show-interfaces-wwan.xml.in index 8ac5933a2..17d4111a9 100644 --- a/op-mode-definitions/show-interfaces-wwan.xml.in +++ b/op-mode-definitions/show-interfaces-wwan.xml.in @@ -12,7 +12,7 @@                  <script>cd /sys/class/net; ls -d wwan*</script>                </completionHelp>              </properties> -            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4"</command> +            <command>${vyos_op_scripts_dir}/interfaces.py show --intf_name="$4" --intf_type=wirelessmodem</command>              <children>                <leafNode name="capabilities">                  <properties> diff --git a/python/vyos/util.py b/python/vyos/util.py index 6a828c0ac..110da3be5 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -348,9 +348,11 @@ def colon_separated_to_dict(data_string, uniquekeys=False):          l = l.strip()          if l:              match = re.match(key_value_re, l) -            if match: +            if match and (len(match.groups()) == 2):                  key = match.groups()[0].strip()                  value = match.groups()[1].strip() +            else: +                raise ValueError(f"""Line "{l}" could not be parsed a colon-separated pair """, l)              if key in data.keys():                  if uniquekeys:                      raise ValueError("Data string has duplicate keys: {0}".format(key)) diff --git a/smoketest/scripts/cli/test_protocols_ospf.py b/smoketest/scripts/cli/test_protocols_ospf.py index 8dd0160d3..130cd3644 100755 --- a/smoketest/scripts/cli/test_protocols_ospf.py +++ b/smoketest/scripts/cli/test_protocols_ospf.py @@ -75,6 +75,9 @@ class TestProtocolsOSPF(VyOSUnitTestSHIM.TestCase):          self.cli_set(base_path + ['log-adjacency-changes', 'detail'])          self.cli_set(base_path + ['default-metric', metric])          self.cli_set(base_path + ['passive-interface', 'default']) +        self.cli_set(base_path + ['area', '10', 'network', '10.0.0.0/16']) +        self.cli_set(base_path + ['area', '10', 'range', '10.0.1.0/24']) +        self.cli_set(base_path + ['area', '10', 'range', '10.0.2.0/24', 'not-advertise'])          # commit changes          self.cli_commit() @@ -90,6 +93,11 @@ class TestProtocolsOSPF(VyOSUnitTestSHIM.TestCase):          self.assertIn(f' capability opaque', frrconfig)          self.assertIn(f' default-metric {metric}', frrconfig)          self.assertIn(f' passive-interface default', frrconfig) +        self.assertIn(f' area 10 stub', frrconfig) +        self.assertIn(f' area 10 network 10.0.0.0/16', frrconfig) +        self.assertIn(f' area 10 range 10.0.1.0/24', frrconfig) +        self.assertNotIn(f' area 10 range 10.0.1.0/24 not-advertise', frrconfig) +        self.assertIn(f' area 10 range 10.0.2.0/24 not-advertise', frrconfig)      def test_ospf_03_access_list(self): diff --git a/src/conf_mode/protocols_ospfv3.py b/src/conf_mode/protocols_ospfv3.py index ee4eaf59d..7cc36b58c 100755 --- a/src/conf_mode/protocols_ospfv3.py +++ b/src/conf_mode/protocols_ospfv3.py @@ -117,6 +117,9 @@ def verify(ospfv3):              if 'area_type' in area_config:                  if len(area_config['area_type']) > 1:                      raise ConfigError(f'Can only configure one area-type for OSPFv3 area "{area}"!') +            for range, range_config in area_config['range'].items(): +                if {'not_advertise', 'advertise'} <= range_config.keys(): +                    raise ConfigError(f'"not-advertise" and "advertise" for "range {range}" cannot be both configured at the same time!')      if 'interface' in ospfv3:          for interface, interface_config in ospfv3['interface'].items(): diff --git a/src/conf_mode/vpn_ipsec.py b/src/conf_mode/vpn_ipsec.py index b79e9847a..3af2af4d9 100755 --- a/src/conf_mode/vpn_ipsec.py +++ b/src/conf_mode/vpn_ipsec.py @@ -95,6 +95,7 @@ def get_config(config=None):      del default_values['esp_group']      del default_values['ike_group']      del default_values['remote_access'] +    del default_values['site_to_site']      ipsec = dict_merge(default_values, ipsec)      if 'esp_group' in ipsec: @@ -143,6 +144,14 @@ def get_config(config=None):              ipsec['remote_access']['radius']['server'][server] = dict_merge(default_values,                  ipsec['remote_access']['radius']['server'][server]) +    # XXX: T2665: we can not safely rely on the defaults() when there are +    # tagNodes in place, it is better to blend in the defaults manually. +    if dict_search('site_to_site.peer', ipsec): +        default_values = defaults(base + ['site-to-site', 'peer']) +        for peer in ipsec['site_to_site']['peer']: +            ipsec['site_to_site']['peer'][peer] = dict_merge(default_values, +              ipsec['site_to_site']['peer'][peer]) +      ipsec['dhcp_no_address'] = {}      ipsec['install_routes'] = 'no' if conf.exists(base + ["options", "disable-route-autoinstall"]) else default_install_routes      ipsec['interface_change'] = leaf_node_changed(conf, base + ['interface']) | 
