From 74be2f22d605af9548b59b82f6d7656cea00d746 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:05:32 -0500 Subject: [PATCH 1/9] Add SRv6 BGP IPv4 overlay integration test (no IS-IS underlay) Adds 03-srv6-bgp-ipv4.yml: IPv6-only core with BGP+SRv6, eBGP for SID prefix exchange with the core, and IPv4 overlay validation. Made-with: Cursor --- tests/integration/srv6/03-srv6-bgp-ipv4.yml | 132 ++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 tests/integration/srv6/03-srv6-bgp-ipv4.yml diff --git a/tests/integration/srv6/03-srv6-bgp-ipv4.yml b/tests/integration/srv6/03-srv6-bgp-ipv4.yml new file mode 100644 index 0000000000..ae20bf5261 --- /dev/null +++ b/tests/integration/srv6/03-srv6-bgp-ipv4.yml @@ -0,0 +1,132 @@ +--- +message: | + The tested device (DUT) is a PE-router running BGP and SRv6 across an IPv6-only network to interconnect + two IPv4-only networks. The validation test checks end-to-end IPv4 connectivity across a SRv6 core. + See https://www.ietf.org/archive/id/draft-mishra-idr-v4-islands-v6-core-4pe-06.html + +defaults.sources.extra: [ ../wait_times.yml ] + +plugin: [ bgp.session ] # For bgp.allowas_in + +addressing: + core: + ipv4: False # ipv6-only + ipv6: 2001:1::/48 # SRv6 requires ipv6 addresses on interfaces + + loopback: + ipv4: False # No need for ipv4 loopbacks, this avoids creating ipv4 ibgp sessions too + ipv6: 2001:db8::/48 + + lb_ce: + ipv4: 192.168.0.0/24 + prefix: 32 + +srv6.allocate_loopback: False # Don't allocate loopback addresses from the locator range +srv6.igp: [ bgp ] +srv6.bgp: + ipv4: True # Enable IPv4 in the overlay (for IBGP) + ipv6: False +srv6.vpn: False + +bgp.as: 65000 # PE iBGP AS for IPv4 overlay + +groups: + _auto_create: True + hosts: + members: [ h1, h2 ] + device: linux + provider: clab + pe: + members: [ dut, pe2 ] + module: [ bgp, srv6 ] + bgp.import: [ connected ] + bgp.advertise_loopback: True # BGP-only underlay needs loopback reachability in BGP + core: + members: [ p ] + module: [ bgp ] # No srv6 module, just BGP + ce: + members: [ ce1, ce2 ] + module: [ bgp ] + loopback.pool: lb_ce + x_switches: + members: [ p, pe2, ce1, ce2 ] + device: frr + provider: clab + +nodes: + dut: + pe2: + p: + bgp.as: 65010 # Different AS to use eBGP for SID/locator exchange + ce1: + bgp.as: 65101 + ce2: + bgp.as: 65102 + +links: +- group: core + pool: core + members: + - dut: + bgp.allowas_in: True # Allow transit via P AS + p: + - p: + pe2: + bgp.allowas_in: True # Allow transit via P AS +- group: edge + members: [ h1-dut, h2-pe2 ] +- group: customer + members: [ ce1-dut, ce2-pe2 ] + +validate: + ebgp_ulay_dut: + description: Check eBGP underlay session P-DUT over IPv6 + wait: ebgp_session + wait_msg: Waiting for eBGP underlay sessions to start + nodes: [ p ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv6') + stop_on_error: true + ebgp_ulay_pe2: + description: Check eBGP underlay session P-PE2 over IPv6 + wait: ebgp_session + wait_msg: Waiting for eBGP underlay sessions to start + nodes: [ p ] + plugin: bgp_neighbor(node.bgp.neighbors,'pe2',af='ipv6') + stop_on_error: true + ebgp_dut: + description: Check EBGP session DUT-CE1 + wait: ebgp_session + wait_msg: Waiting for EBGP session DUT-CE1 + nodes: [ ce1 ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv4') + ebgp_pe2: + description: Check EBGP session PE2-CE2 + wait: ebgp_session + wait_msg: Waiting for EBGP session PE2-CE2 + nodes: [ ce2 ] + plugin: bgp_neighbor(node.bgp.neighbors,'pe2',af='ipv4') + ibgp: + description: Check IBGP session with activation of IPv4 over IPv6 + wait: 10 + wait_msg: Waiting for IBGP sessions to start + nodes: [ pe2 ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv6',activate='ipv4') + stop_on_error: true + ping_hh: + description: Ping-based host-to-host reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ h1 ] + plugin: ping('h2') + ping_h_ce: + description: Ping-based host-to-CE reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ h1, h2 ] + plugin: ping('ce1') + ping_ce_ce: + description: Ping-based CE-to-CE reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ ce1 ] + plugin: ping(nodes.ce2.loopback.ipv4,src=nodes.ce1.loopback.ipv4) From 7c57b6bbbab2d73e50995b505d86a4f634d98b33 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:05:59 -0500 Subject: [PATCH 2/9] srv6: activate BGP AFs for SRv6; allow bgp in srv6.igp - Configure neighbor activate from srv6.bgp and srv6.igp (IPv6 eBGP when igp includes bgp) - Add bgp to srv6.igp valid_values for BGP-only underlay Made-with: Cursor --- netsim/modules/srv6.py | 11 ++++------- netsim/modules/srv6.yml | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/netsim/modules/srv6.py b/netsim/modules/srv6.py index b904476b6f..4be85c28cd 100644 --- a/netsim/modules/srv6.py +++ b/netsim/modules/srv6.py @@ -30,20 +30,17 @@ def get_pool_name() -> str: def configure_bgp_for_srv6(node: Box, topology: Box) -> None: srv6_bgp = node.get('srv6.bgp',{}) srv6_vpn = node.get('srv6.vpn',{}) + srv6_igp = node.get('srv6.igp',[]) for nb in list(node.get('bgp.neighbors',[])): if 'ipv6' not in nb: # Skip IPv4-only neighbors continue for af in DEFAULT_BGP_AF.keys(): - if nb.type in srv6_bgp.get(af,[]) or nb.type in srv6_vpn.get(af,[]): -# If anything, deactivating BGP AFs would break SR-OS and not achieve anything on FRR -# nb.activate[af] = False # Disable regular BGP activation - pass - else: - continue # Skip if neither AF is activated + # or nb.type in srv6_vpn.get(af,[]): + nb.activate[af] = nb.type in srv6_bgp.get(af,[]) or (af=='ipv6' and nb.type=='ebgp' and 'bgp' in srv6_igp) # The following code is untested and thus commented out -# if nb.type=='ebgp': # Set next hop unchanged for EBGP peers, to get end-2-end SID routing +# if nb.type=='ebgp': # Set next hop unchanged for EBGP peers, to get end-2-end SID routing # nb.next_hop_unchanged = True if af=='ipv4' and 'ipv4' not in nb: nb.extended_nexthop = True # Enable extended next hops when IPv4 AF is used without IPv4 transport diff --git a/netsim/modules/srv6.yml b/netsim/modules/srv6.yml index 06290e6cbc..f05561a306 100644 --- a/netsim/modules/srv6.yml +++ b/netsim/modules/srv6.yml @@ -21,7 +21,7 @@ attributes: _alt_types: [ bool, BoxList ] ipv4: { type: list, true_value: [ ibgp ] } ipv6: { type: list, true_value: [ ibgp ] } - igp: { type: list, valid_values: [ isis, ospf ] } + igp: { type: list, valid_values: [ isis, ospf, bgp ] } vpn: # BGP VPN v4/v6 _alt_types: [ bool, BoxList ] ipv4: { type: list, true_value: [ ibgp ] } From 1ed4f69691d80221fe45e44329180cb712754bf2 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:06:41 -0500 Subject: [PATCH 3/9] frr: advertise SRv6 BGP feature support Enable features.srv6.bgp for FRR device (BGP-based SRv6 underlay). Made-with: Cursor --- netsim/devices/frr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netsim/devices/frr.yml b/netsim/devices/frr.yml index 9cbb367d86..bddd5f4d8a 100644 --- a/netsim/devices/frr.yml +++ b/netsim/devices/frr.yml @@ -184,7 +184,7 @@ features: af: [ ipv4, ipv6 ] protocol: [ isis, ospfv2 ] srv6: - bgp: false + bgp: true isis: true vpn: true stp: From 9f25b5bce630cc6901498db3f3582bab3de24740 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:07:04 -0500 Subject: [PATCH 4/9] srv6 frr: BGP underlay SRv6 templates - frr.bgp.j2: when srv6.igp includes bgp, set locator on SRv6 dummy and originate locator in IPv6 unicast; add encapsulation-srv6 on neighbors; render srv6.bgp AFs with sid export auto; keep VPN AFs when srv6.vpn - frr.j2: create vrf-srv6; include BGP SRv6 block when srv6.bgp is set Made-with: Cursor --- netsim/ansible/templates/srv6/frr.bgp.j2 | 25 ++++++++++++++++++++++-- netsim/ansible/templates/srv6/frr.j2 | 7 ++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/netsim/ansible/templates/srv6/frr.bgp.j2 b/netsim/ansible/templates/srv6/frr.bgp.j2 index e57db3a438..e996e6bf39 100644 --- a/netsim/ansible/templates/srv6/frr.bgp.j2 +++ b/netsim/ansible/templates/srv6/frr.bgp.j2 @@ -1,8 +1,20 @@ +{% if 'bgp' in srv6.igp|default([]) %} +interface ${SRv6_DEV} + ipv6 address {{ srv6.locator }} +{% endif %} + router bgp {{ bgp.as }} + ! bgp default software-version-capability latest-encoding segment-routing srv6 locator {{ inventory_hostname }} exit + {% if 'bgp' in srv6.igp|default([]) %} + address-family ipv6 unicast + network {{ srv6.locator }} + exit-address-family + {% endif %} + {# The core bgp module only provisions neighbors for which the transport matches the address family, i.e. IPv4 over v4 and IPv6 over v6. This template modifies IPv6 neighbors, adding VPNv4/6 AF over IPv6 transport and setting various @@ -10,6 +22,7 @@ router bgp {{ bgp.as }} #} {% macro bgp_neighbor(n,peer,af) %} neighbor {{ peer }} activate + neighbor {{ peer }} encapsulation-srv6 neighbor {{ peer }} send-community both {% if n.next_hop_unchanged is defined %} neighbor {{ peer }} attribute-unchanged next-hop @@ -19,7 +32,7 @@ router bgp {{ bgp.as }} {% endif %} {% endmacro -%} -{% if srv6.vpn is defined %} +{% if srv6.vpn is defined or srv6.bgp is defined %} {% for n in bgp.neighbors|default([]) if n.ipv6 is defined %} {% set peer = n.ipv6 %} neighbor {{ peer }} remote-as {{ n.as }} @@ -29,10 +42,18 @@ router bgp {{ bgp.as }} {% endif %} {%- for af in ['ipv4','ipv6'] %} -{% if n.type in srv6.vpn.get(af,[]) %} +{% if srv6.bgp is defined and n.type in srv6.bgp.get(af,[]) %} + address-family {{ af }} unicast +! + sid export auto +{{ bgp_neighbor(n,peer,af) -}} +! +{% endif %} +{% if srv6.vpn is defined and n.type in srv6.vpn.get(af,[]) %} address-family {{ af }} vpn ! {{ bgp_neighbor(n,peer,af) -}} +! {% endif %} {% endfor %} {% endfor %} diff --git a/netsim/ansible/templates/srv6/frr.j2 b/netsim/ansible/templates/srv6/frr.j2 index 9615e64644..0e04007bcf 100644 --- a/netsim/ansible/templates/srv6/frr.j2 +++ b/netsim/ansible/templates/srv6/frr.j2 @@ -9,6 +9,11 @@ ip link add ${SRv6_DEV} type dummy ip link set ${SRv6_DEV} up fi +if [ ! -e /sys/devices/virtual/net/vrf-srv6 ]; then +ip link add vrf-srv6 type vrf table 254 +ip link set vrf-srv6 up +fi + # See https://onvox.net/2024/12/16/srv6-frr/ sysctl -w net.ipv6.seg6_flowlabel=1 sysctl -w net.ipv6.conf.all.seg6_enabled=1 @@ -44,7 +49,7 @@ router isis {{ isis.instance }} exit {% endif %} -{% if srv6.vpn is defined and bgp.as is defined %} +{% if (srv6.vpn is defined or srv6.bgp is defined) and bgp.as is defined %} {% include "frr.bgp.j2" %} {% endif %} From aaac493bfcbce023ce0c97e5748193f004bf6d78 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:12:19 -0500 Subject: [PATCH 5/9] srv6 frr.j2: optional SRv6 VRF for BGP underlay Use SRv6_VRF_DEV; create vrf-srv6 only when srv6.igp includes bgp. Made-with: Cursor --- netsim/ansible/templates/srv6/frr.j2 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/netsim/ansible/templates/srv6/frr.j2 b/netsim/ansible/templates/srv6/frr.j2 index 0e04007bcf..9d2bea4650 100644 --- a/netsim/ansible/templates/srv6/frr.j2 +++ b/netsim/ansible/templates/srv6/frr.j2 @@ -3,16 +3,22 @@ set -e export SRv6_DEV="sr0" +export SRv6_VRF_DEV="vrf-srv6" if [ ! -e /sys/devices/virtual/net/${SRv6_DEV} ]; then ip link add ${SRv6_DEV} type dummy ip link set ${SRv6_DEV} up fi -if [ ! -e /sys/devices/virtual/net/vrf-srv6 ]; then -ip link add vrf-srv6 type vrf table 254 -ip link set vrf-srv6 up +# +# Create SRv6 default VRF, needed to install SRv6 nexthops +# +{% if 'bgp' in srv6.igp|default([]) %} +if [ ! -e /sys/devices/virtual/net/${SRv6_VRF_DEV} ]; then +ip link add ${SRv6_VRF_DEV} type vrf table 254 +ip link set ${SRv6_VRF_DEV} up fi +{% endif %} # See https://onvox.net/2024/12/16/srv6-frr/ sysctl -w net.ipv6.seg6_flowlabel=1 From 12a7a768b34779ff16dd7530daac829606da27ff Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:20:45 -0500 Subject: [PATCH 6/9] tests/srv6: clarify 03-srv6-bgp-ipv4 allowas_in; silence missing_igp - Expand bgp.session plugin comment for PE transit via P AS - Set defaults.bgp.warnings.missing_igp: False (BGP-only underlay) Made-with: Cursor --- tests/integration/srv6/03-srv6-bgp-ipv4.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/srv6/03-srv6-bgp-ipv4.yml b/tests/integration/srv6/03-srv6-bgp-ipv4.yml index ae20bf5261..4d7cd49416 100644 --- a/tests/integration/srv6/03-srv6-bgp-ipv4.yml +++ b/tests/integration/srv6/03-srv6-bgp-ipv4.yml @@ -6,7 +6,7 @@ message: | defaults.sources.extra: [ ../wait_times.yml ] -plugin: [ bgp.session ] # For bgp.allowas_in +plugin: [ bgp.session ] # For bgp.allowas_in, the PE AS needs to be able to transit via the P AS addressing: core: @@ -29,6 +29,7 @@ srv6.bgp: srv6.vpn: False bgp.as: 65000 # PE iBGP AS for IPv4 overlay +defaults.bgp.warnings.missing_igp: False groups: _auto_create: True From af6527fb1a802aa81e98cff5bbc3962c250d7e60 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:21:07 -0500 Subject: [PATCH 7/9] tests/srv6: add 04-srv6-bgp-ipv6 overlay integration test IPv6 customer loopbacks and overlay (srv6.bgp ipv6), BGP-only underlay with eBGP SID exchange and allowas_in on core links; IPv6 ping validation. Made-with: Cursor --- tests/integration/srv6/04-srv6-bgp-ipv6.yml | 140 ++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 tests/integration/srv6/04-srv6-bgp-ipv6.yml diff --git a/tests/integration/srv6/04-srv6-bgp-ipv6.yml b/tests/integration/srv6/04-srv6-bgp-ipv6.yml new file mode 100644 index 0000000000..5250ff1ae4 --- /dev/null +++ b/tests/integration/srv6/04-srv6-bgp-ipv6.yml @@ -0,0 +1,140 @@ +--- +message: | + The tested device (DUT) is a PE-router running BGP and SRv6 across an IPv6-only network to interconnect + two IPv6 customer sites. The validation test checks end-to-end IPv6 connectivity across an SRv6 core. + See https://www.ietf.org/archive/id/draft-mishra-idr-v4-islands-v6-core-4pe-06.html + +defaults.sources.extra: [ ../wait_times.yml ] + +plugin: [ bgp.session ] # For bgp.allowas_in, the PE AS needs to be able to transit via the P AS + +addressing: + core: + ipv4: False # ipv6-only + ipv6: 2001:1::/48 # SRv6 requires ipv6 addresses on interfaces + + loopback: + ipv4: False # No need for ipv4 loopbacks, this avoids creating ipv4 ibgp sessions too + ipv6: 2001:db8::/48 + + lb_ce: + ipv6: 2001:db8:ce::/48 + prefix: 32 + + p2p: + ipv6: 2001:db8:4::/48 + ipv4: False + lan: + ipv4: False + ipv6: 2001:db8:42::/48 + +srv6.allocate_loopback: False # Don't allocate loopback addresses from the locator range +srv6.igp: [ bgp ] +srv6.bgp: + ipv4: False + ipv6: True # Enable IPv6 in the overlay (for IBGP) +srv6.vpn: False + +bgp.as: 65000 # PE iBGP AS for IPv6 overlay +defaults.bgp.warnings.missing_igp: False + +groups: + _auto_create: True + hosts: + members: [ h1, h2 ] + device: linux + provider: clab + pe: + members: [ dut, pe2 ] + module: [ bgp, srv6 ] + bgp.import: [ connected ] + bgp.advertise_loopback: True # BGP-only underlay needs loopback reachability in BGP + core: + members: [ p ] + module: [ bgp ] # No srv6 module, just BGP + ce: + members: [ ce1, ce2 ] + module: [ bgp ] + loopback.pool: lb_ce + x_switches: + members: [ p, pe2, ce1, ce2 ] + device: frr + provider: clab + +nodes: + dut: + pe2: + p: + bgp.as: 65010 # Different AS to use eBGP for SID/locator exchange + ce1: + bgp.as: 65101 + ce2: + bgp.as: 65102 + +links: +- group: core + pool: core + members: + - dut: + bgp.allowas_in: True # Allow transit via P AS + p: + - p: + pe2: + bgp.allowas_in: True # Allow transit via P AS +- group: edge + members: [ h1-dut, h2-pe2 ] +- group: customer + members: [ ce1-dut, ce2-pe2 ] + +validate: + ebgp_ulay_dut: + description: Check eBGP underlay session P-DUT over IPv6 + wait: ebgp_session + wait_msg: Waiting for eBGP underlay sessions to start + nodes: [ p ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv6') + stop_on_error: true + ebgp_ulay_pe2: + description: Check eBGP underlay session P-PE2 over IPv6 + wait: ebgp_session + wait_msg: Waiting for eBGP underlay sessions to start + nodes: [ p ] + plugin: bgp_neighbor(node.bgp.neighbors,'pe2',af='ipv6') + stop_on_error: true + ebgp_dut: + description: Check EBGP session DUT-CE1 (IPv6) + wait: ebgp_session + wait_msg: Waiting for EBGP session DUT-CE1 + nodes: [ ce1 ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv6') + ebgp_pe2: + description: Check EBGP session PE2-CE2 (IPv6) + wait: ebgp_session + wait_msg: Waiting for EBGP session PE2-CE2 + nodes: [ ce2 ] + plugin: bgp_neighbor(node.bgp.neighbors,'pe2',af='ipv6') + ibgp: + description: Check IBGP session for IPv6 unicast over IPv6 transport + wait: 10 + wait_msg: Waiting for IBGP sessions to start + nodes: [ pe2 ] + plugin: bgp_neighbor(node.bgp.neighbors,'dut',af='ipv6') + stop_on_error: true + ping_hh: + description: Ping-based host-to-host reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ h1 ] + plugin: ping('h2',af='ipv6') + ping_h_ce: + description: Ping-based host-to-CE reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ h1, h2 ] + plugin: ping('ce1',af='ipv6') + ping_ce_ce: + description: Ping-based CE-to-CE reachability test + wait_msg: We might have to wait a bit longer + wait: 10 + nodes: [ ce1 ] + plugin: ping(nodes.ce2.loopback.ipv6,src=nodes.ce1.loopback.ipv6,af='ipv6') From ac5bcfc44a38924712777b87077e718a6ee36ab7 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:22:53 -0500 Subject: [PATCH 8/9] tests/srv6: yamllint 03-srv6-bgp-ipv4 (links indent, comment spacing) Made-with: Cursor --- tests/integration/srv6/03-srv6-bgp-ipv4.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/integration/srv6/03-srv6-bgp-ipv4.yml b/tests/integration/srv6/03-srv6-bgp-ipv4.yml index 4d7cd49416..5a89ac1ad8 100644 --- a/tests/integration/srv6/03-srv6-bgp-ipv4.yml +++ b/tests/integration/srv6/03-srv6-bgp-ipv4.yml @@ -21,7 +21,7 @@ addressing: ipv4: 192.168.0.0/24 prefix: 32 -srv6.allocate_loopback: False # Don't allocate loopback addresses from the locator range +srv6.allocate_loopback: False # Don't allocate loopback addresses from the locator range srv6.igp: [ bgp ] srv6.bgp: ipv4: True # Enable IPv4 in the overlay (for IBGP) @@ -67,13 +67,13 @@ nodes: links: - group: core pool: core - members: + members: - dut: - bgp.allowas_in: True # Allow transit via P AS + bgp.allowas_in: True # Allow transit via P AS p: - p: pe2: - bgp.allowas_in: True # Allow transit via P AS + bgp.allowas_in: True # Allow transit via P AS - group: edge members: [ h1-dut, h2-pe2 ] - group: customer From 3d364f6a7c6e7cb58a3e616a151e206639d694c1 Mon Sep 17 00:00:00 2001 From: Jeroen van Bemmel Date: Tue, 31 Mar 2026 13:38:26 -0500 Subject: [PATCH 9/9] srv6: drop unused srv6_vpn in configure_bgp_for_srv6 Remove dead srv6.vpn lookup and stale comment; activation logic is unchanged. Made-with: Cursor --- netsim/modules/srv6.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/netsim/modules/srv6.py b/netsim/modules/srv6.py index 4be85c28cd..070a2cb11f 100644 --- a/netsim/modules/srv6.py +++ b/netsim/modules/srv6.py @@ -29,14 +29,12 @@ def get_pool_name() -> str: """ def configure_bgp_for_srv6(node: Box, topology: Box) -> None: srv6_bgp = node.get('srv6.bgp',{}) - srv6_vpn = node.get('srv6.vpn',{}) srv6_igp = node.get('srv6.igp',[]) for nb in list(node.get('bgp.neighbors',[])): if 'ipv6' not in nb: # Skip IPv4-only neighbors continue for af in DEFAULT_BGP_AF.keys(): - # or nb.type in srv6_vpn.get(af,[]): nb.activate[af] = nb.type in srv6_bgp.get(af,[]) or (af=='ipv6' and nb.type=='ebgp' and 'bgp' in srv6_igp) # The following code is untested and thus commented out