diff options
| -rw-r--r-- | data/templates/frr/bgpd.frr.j2 | 20 | ||||
| -rw-r--r-- | interface-definitions/include/bgp/protocol-common-config.xml.i | 70 | ||||
| -rw-r--r-- | interface-definitions/interfaces-bonding.xml.in | 2 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_protocols_bgp.py | 18 | 
4 files changed, 109 insertions, 1 deletions
| diff --git a/data/templates/frr/bgpd.frr.j2 b/data/templates/frr/bgpd.frr.j2 index d724dbd79..6f81174ac 100644 --- a/data/templates/frr/bgpd.frr.j2 +++ b/data/templates/frr/bgpd.frr.j2 @@ -373,6 +373,26 @@ router bgp {{ system_as }} {{ 'vrf ' ~ vrf if vrf is vyos_defined }}  {%         if afi_config.advertise_svi_ip is vyos_defined %}    advertise-svi-ip  {%         endif %} +{%         if afi_config.default_originate.ipv4 is vyos_defined %} +  default-originate ipv4 +{%         endif %} +{%         if afi_config.default_originate.ipv6 is vyos_defined %} +  default-originate ipv6 +{%         endif %} +{%         if afi_config.disable_ead_evi_rx is vyos_defined %} +  disable-ead-evi-rx +{%         endif %} +{%         if afi_config.disable_ead_evi_tx is vyos_defined %} +  disable-ead-evi-tx +{%         endif %} +{%         if afi_config.ead_es_frag.evi_limit is vyos_defined %} +  ead-es-frag evi-limit {{ afi_config.ead_es_frag.evi_limit }} +{%         endif %} +{%         if afi_config.ead_es_route_target.export is vyos_defined %} +{%             for route_target in afi_config.ead_es_route_target.export %} + ead-es-route-target export {{ route_target }} +{%             endfor %} +{%         endif %}  {%         if afi_config.rt_auto_derive is vyos_defined %}    autort rfc8365-compatible  {%         endif %} diff --git a/interface-definitions/include/bgp/protocol-common-config.xml.i b/interface-definitions/include/bgp/protocol-common-config.xml.i index 3d9333639..4e43298bc 100644 --- a/interface-definitions/include/bgp/protocol-common-config.xml.i +++ b/interface-definitions/include/bgp/protocol-common-config.xml.i @@ -806,6 +806,76 @@              <valueless/>            </properties>          </leafNode> +        <node name="default-originate"> +          <properties> +            <help>Originate a default route</help> +          </properties> +          <children> +            <leafNode name="ipv4"> +              <properties> +                <help>IPv4 address family</help> +                <valueless/> +              </properties> +            </leafNode> +            <leafNode name="ipv6"> +              <properties> +                <help>IPv6 address family</help> +                <valueless/> +              </properties> +            </leafNode> +          </children> +        </node> +        <leafNode name="disable-ead-evi-rx"> +          <properties> +            <help>Activate PE on EAD-ES even if EAD-EVI is not received</help> +            <valueless/> +          </properties> +        </leafNode> +        <leafNode name="disable-ead-evi-tx"> +          <properties> +            <help>Do not advertise EAD-EVI for local ESs</help> +            <valueless/> +          </properties> +        </leafNode> +        <node name="ead-es-frag"> +          <properties> +            <help>EAD ES fragment config</help> +          </properties> +          <children> +            <leafNode name="evi-limit"> +              <properties> +                <help>EVIs per-fragment</help> +                <valueHelp> +                  <format>u32:1-1000</format> +                  <description>limit</description> +                </valueHelp> +                <constraint> +                  <validator name="numeric" argument="--range 1-1000"/> +                </constraint> +              </properties> +            </leafNode> +          </children> +        </node> +        <node name="ead-es-route-target"> +          <properties> +            <help>EAD ES Route Target</help> +          </properties> +          <children> +            <leafNode name="export"> +              <properties> +                <help>Route Target export</help> +                <valueHelp> +                  <format>txt</format> +                  <description>Route target (A.B.C.D:MN|EF:OPQR|GHJK:MN)</description> +                </valueHelp> +                <constraint> +                  <validator name="bgp-rd-rt" argument="--route-target-multi"/> +                </constraint> +                <multi/> +              </properties> +            </leafNode> +          </children> +        </node>          <node name="flooding">            <properties>              <help>Specify handling for BUM packets</help> diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in index 4e24c7be1..86c4776b6 100644 --- a/interface-definitions/interfaces-bonding.xml.in +++ b/interface-definitions/interfaces-bonding.xml.in @@ -104,7 +104,7 @@                </leafNode>                <leafNode name="uplink">                  <properties> -                  <help>Uplink to the VxLAN core</help> +                  <help>Uplink to the VXLAN core</help>                    <valueless/>                  </properties>                </leafNode> diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py index 5e3402fa8..23e138ebe 100755 --- a/smoketest/scripts/cli/test_protocols_bgp.py +++ b/smoketest/scripts/cli/test_protocols_bgp.py @@ -728,15 +728,25 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):      def test_bgp_07_l2vpn_evpn(self):          vnis = ['10010', '10020', '10030']          neighbors = ['192.0.2.10', '192.0.2.20', '192.0.2.30'] +        evi_limit = '1000' +        route_targets = ['1.1.1.1:100', '1.1.1.1:200', '1.1.1.1:300']          self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'advertise-all-vni'])          self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'advertise-default-gw'])          self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'advertise-svi-ip'])          self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'flooding', 'disable']) +        self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'default-originate', 'ipv4']) +        self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'default-originate', 'ipv6']) +        self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'disable-ead-evi-rx']) +        self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'disable-ead-evi-tx'])          for vni in vnis:              self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'vni', vni, 'advertise-default-gw'])              self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'vni', vni, 'advertise-svi-ip']) +        self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'ead-es-frag', 'evi-limit', evi_limit]) +        for route_target in route_targets: +            self.cli_set(base_path + ['address-family', 'l2vpn-evpn', 'ead-es-route-target', 'export', route_target]) +          # commit changes          self.cli_commit() @@ -747,12 +757,20 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):          self.assertIn(f'  advertise-all-vni', frrconfig)          self.assertIn(f'  advertise-default-gw', frrconfig)          self.assertIn(f'  advertise-svi-ip', frrconfig) +        self.assertIn(f'  default-originate ipv4', frrconfig) +        self.assertIn(f'  default-originate ipv6', frrconfig) +        self.assertIn(f'  disable-ead-evi-rx', frrconfig) +        self.assertIn(f'  disable-ead-evi-tx', frrconfig)          self.assertIn(f'  flooding disable', frrconfig)          for vni in vnis:              vniconfig = self.getFRRconfig(f'  vni {vni}')              self.assertIn(f'vni {vni}', vniconfig)              self.assertIn(f'   advertise-default-gw', vniconfig)              self.assertIn(f'   advertise-svi-ip', vniconfig) +        self.assertIn(f'  ead-es-frag evi-limit {evi_limit}', frrconfig) +        for route_target in route_targets: +            self.assertIn(f'  ead-es-route-target export {route_target}', frrconfig) +      def test_bgp_09_distance_and_flowspec(self):          distance_external = '25' | 
