networklab 26.2__tar.gz → 26.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- networklab-26.4/PKG-INFO +113 -0
- networklab-26.4/README.md +70 -0
- networklab-26.4/netsim/__init__.py +18 -0
- networklab-26.4/netsim/ansible/tasks/deploy-config/exos.yml +4 -0
- networklab-26.4/netsim/ansible/tasks/deploy-custom-config.yml +85 -0
- networklab-26.4/netsim/ansible/tasks/fetch-config/exos.yml +3 -0
- networklab-26.4/netsim/ansible/tasks/fortios/initial.yml +55 -0
- networklab-26.4/netsim/ansible/templates/bgp/arubacx.j2 +40 -0
- networklab-26.4/netsim/ansible/templates/bgp/arubacx.macro.j2 +40 -0
- networklab-26.4/netsim/ansible/templates/bgp/cumulus_nvue.macro.j2 +108 -0
- networklab-26.4/netsim/ansible/templates/bgp/dellos10.j2 +45 -0
- networklab-26.4/netsim/ansible/templates/bgp/eos.j2 +87 -0
- networklab-26.4/netsim/ansible/templates/bgp/frr.j2 +77 -0
- networklab-26.4/netsim/ansible/templates/bgp/ios.j2 +46 -0
- networklab-26.4/netsim/ansible/templates/bgp/ios.macro.j2 +55 -0
- networklab-26.4/netsim/ansible/templates/bgp/iosxr.j2 +86 -0
- networklab-26.4/netsim/ansible/templates/bgp/junos.j2 +81 -0
- networklab-26.4/netsim/ansible/templates/bgp/junos.macro.j2 +112 -0
- networklab-26.4/netsim/ansible/templates/bgp/junos.policy.j2 +75 -0
- networklab-26.4/netsim/ansible/templates/bgp/nxos.j2 +52 -0
- networklab-26.4/netsim/ansible/templates/bgp/openbsd.j2 +103 -0
- networklab-26.4/netsim/ansible/templates/bgp/srlinux.macro.j2 +279 -0
- networklab-26.4/netsim/ansible/templates/bgp/sros.gnmi.macro.j2 +145 -0
- networklab-26.4/netsim/ansible/templates/bgp/vyos.j2 +40 -0
- networklab-26.4/netsim/ansible/templates/evpn/crpd.j2 +1 -0
- networklab-26.4/netsim/ansible/templates/evpn/ioll2.j2 +40 -0
- networklab-26.4/netsim/ansible/templates/evpn/ios-common.j2 +90 -0
- networklab-26.4/netsim/ansible/templates/evpn/ios.j2 +29 -0
- networklab-26.4/netsim/ansible/templates/evpn/iosxr.j2 +72 -0
- networklab-26.4/netsim/ansible/templates/evpn/junos/common.j2 +200 -0
- networklab-26.4/netsim/ansible/templates/evpn/junos/vlan.j2 +57 -0
- networklab-26.4/netsim/ansible/templates/evpn/vjunos-router.j2 +70 -0
- networklab-26.4/netsim/ansible/templates/evpn/vjunos-switch.j2 +34 -0
- networklab-26.4/netsim/ansible/templates/evpn/vptx.j2 +14 -0
- networklab-26.4/netsim/ansible/templates/gateway/crpd.j2 +37 -0
- networklab-26.4/netsim/ansible/templates/gateway/exos.j2 +26 -0
- networklab-26.4/netsim/ansible/templates/gateway/iosxr.j2 +26 -0
- networklab-26.4/netsim/ansible/templates/initial/crpd.j2 +61 -0
- networklab-26.4/netsim/ansible/templates/initial/exos.j2 +94 -0
- networklab-26.4/netsim/ansible/templates/initial/exos.vlan.j2 +5 -0
- networklab-26.4/netsim/ansible/templates/isis/crpd.j2 +2 -0
- networklab-26.4/netsim/ansible/templates/isis/junos.isis.j2 +75 -0
- networklab-26.4/netsim/ansible/templates/isis/junos.j2 +10 -0
- networklab-26.4/netsim/ansible/templates/isis/srlinux.j2 +8 -0
- networklab-26.4/netsim/ansible/templates/isis/srlinux.macro.j2 +68 -0
- networklab-26.4/netsim/ansible/templates/isis/sros.j2 +78 -0
- networklab-26.4/netsim/ansible/templates/isis/vsrx.j2 +12 -0
- networklab-26.4/netsim/ansible/templates/mpls/frr.mplsvpn.j2 +17 -0
- networklab-26.4/netsim/ansible/templates/mpls/ios.6pe.j2 +17 -0
- networklab-26.4/netsim/ansible/templates/mpls/ios.j2 +12 -0
- networklab-26.4/netsim/ansible/templates/mpls/ios.mplsvpn.j2 +18 -0
- networklab-26.4/netsim/ansible/templates/mpls/iosxr/6pe.j2 +22 -0
- networklab-26.4/netsim/ansible/templates/mpls/iosxr/ldp.j2 +16 -0
- networklab-26.4/netsim/ansible/templates/mpls/iosxr/mplsvpn.j2 +32 -0
- networklab-26.4/netsim/ansible/templates/mpls/iosxr.j2 +12 -0
- networklab-26.4/netsim/ansible/templates/mpls/junos.ldp.j2 +31 -0
- networklab-26.4/netsim/ansible/templates/mpls/junos.mplsvpn.j2 +38 -0
- networklab-26.4/netsim/ansible/templates/mpls/sros.bgp.j2 +51 -0
- networklab-26.4/netsim/ansible/templates/mpls/sros.j2 +32 -0
- networklab-26.4/netsim/ansible/templates/mpls/vyos.mplsvpn.j2 +15 -0
- networklab-26.4/netsim/ansible/templates/normalize/dellos10.j2 +5 -0
- networklab-26.4/netsim/ansible/templates/normalize/eos.j2 +36 -0
- networklab-26.4/netsim/ansible/templates/ospf/exos.j2 +9 -0
- networklab-26.4/netsim/ansible/templates/ospf/exos.ospfv2.j2 +32 -0
- networklab-26.4/netsim/ansible/templates/ospf/exos.ospfv3.j2 +32 -0
- networklab-26.4/netsim/ansible/templates/ospf/srlinux.macro.j2 +64 -0
- networklab-26.4/netsim/ansible/templates/ospf/sros.j2 +80 -0
- networklab-26.4/netsim/ansible/templates/routing/_redistribute.iosxr.j2 +20 -0
- networklab-26.4/netsim/ansible/templates/routing/fortios.j2 +36 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/aspath.j2 +8 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/clist.j2 +16 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/policy-delete.j2 +16 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/policy-match.j2 +26 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/policy-set.j2 +29 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/policy.j2 +29 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/prefix.j2 +16 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr/static.j2 +13 -0
- networklab-26.4/netsim/ansible/templates/routing/iosxr.j2 +30 -0
- networklab-26.4/netsim/ansible/templates/routing/junos/aspath.j2 +27 -0
- networklab-26.4/netsim/ansible/templates/routing/junos/community.j2 +32 -0
- networklab-26.4/netsim/ansible/templates/routing/junos/static.j2 +36 -0
- networklab-26.4/netsim/ansible/templates/routing/junos.j2 +19 -0
- networklab-26.4/netsim/ansible/templates/routing/nxos/static.j2 +18 -0
- networklab-26.4/netsim/ansible/templates/routing/nxos.j2 +3 -0
- networklab-26.4/netsim/ansible/templates/routing/openbsd.j2 +37 -0
- networklab-26.4/netsim/ansible/templates/routing/srlinux/policy.j2 +45 -0
- networklab-26.4/netsim/ansible/templates/routing/srlinux/prefix.j2 +17 -0
- networklab-26.4/netsim/ansible/templates/routing/srlinux/static.j2 +100 -0
- networklab-26.4/netsim/ansible/templates/routing/srlinux.j2 +10 -0
- networklab-26.4/netsim/ansible/templates/routing/sros/policy.j2 +17 -0
- networklab-26.4/netsim/ansible/templates/routing/sros/static.j2 +61 -0
- networklab-26.4/netsim/ansible/templates/routing/sros.j2 +7 -0
- networklab-26.4/netsim/ansible/templates/sr/eos.j2 +23 -0
- networklab-26.4/netsim/ansible/templates/sr/frr.j2 +39 -0
- networklab-26.4/netsim/ansible/templates/sr/ios.j2 +23 -0
- networklab-26.4/netsim/ansible/templates/sr/iosxr.j2 +28 -0
- networklab-26.4/netsim/ansible/templates/sr/junos.j2 +50 -0
- networklab-26.4/netsim/ansible/templates/sr/srlinux.j2 +62 -0
- networklab-26.4/netsim/ansible/templates/sr/sros.j2 +47 -0
- networklab-26.4/netsim/ansible/templates/srv6/iosxr.bgp.j2 +16 -0
- networklab-26.4/netsim/ansible/templates/srv6/iosxr.j2 +19 -0
- networklab-26.4/netsim/ansible/templates/vlan/exos.j2 +15 -0
- networklab-26.4/netsim/ansible/templates/vlan/vjunos-router.j2 +33 -0
- networklab-26.4/netsim/ansible/templates/vlan/vptx.j2 +45 -0
- networklab-26.4/netsim/ansible/templates/vrf/arubacx.bgp.j2 +33 -0
- networklab-26.4/netsim/ansible/templates/vrf/dellos10.bgp.j2 +61 -0
- networklab-26.4/netsim/ansible/templates/vrf/eos.bgp.j2 +44 -0
- networklab-26.4/netsim/ansible/templates/vrf/frr.bgp.j2 +46 -0
- networklab-26.4/netsim/ansible/templates/vrf/ios.bgp.j2 +27 -0
- networklab-26.4/netsim/ansible/templates/vrf/iosxr.bgp.j2 +41 -0
- networklab-26.4/netsim/ansible/templates/vrf/junos.bgp.j2 +75 -0
- networklab-26.4/netsim/ansible/templates/vrf/nxos.bgp.j2 +49 -0
- networklab-26.4/netsim/ansible/templates/vrf/srlinux.j2 +98 -0
- networklab-26.4/netsim/ansible/templates/vrf/vyos.bgp.j2 +39 -0
- networklab-26.4/netsim/ansible/templates/vxlan/vjunos-router.j2 +68 -0
- networklab-26.4/netsim/ansible/templates/vxlan/vjunos-switch.j2 +81 -0
- networklab-26.4/netsim/ansible/templates/vxlan/vptx.j2 +66 -0
- networklab-26.4/netsim/augment/main.py +130 -0
- networklab-26.4/netsim/cli/ansible.py +100 -0
- networklab-26.4/netsim/cli/config.py +230 -0
- networklab-26.4/netsim/cli/exec.py +66 -0
- networklab-26.4/netsim/cli/initial/deploy.py +140 -0
- networklab-26.4/netsim/cli/show/__init__.py +123 -0
- networklab-26.4/netsim/cli/show/attributes.py +89 -0
- networklab-26.4/netsim/cli/show/defaults.py +60 -0
- networklab-26.4/netsim/cli/show/devices.py +85 -0
- networklab-26.4/netsim/cli/show/images.py +74 -0
- networklab-26.4/netsim/cli/show/module_support.py +85 -0
- networklab-26.4/netsim/cli/show/modules.py +285 -0
- networklab-26.4/netsim/cli/show/outputs.py +51 -0
- networklab-26.4/netsim/cli/show/providers.py +92 -0
- networklab-26.4/netsim/cli/show/reports.py +120 -0
- networklab-26.4/netsim/cli/show/utils.py +94 -0
- networklab-26.4/netsim/cli/status.py +393 -0
- networklab-26.4/netsim/daemons/bird/bgp.j2 +142 -0
- networklab-26.4/netsim/daemons/bird/ospf.j2 +86 -0
- networklab-26.4/netsim/daemons/bird.yml +74 -0
- networklab-26.4/netsim/data/types.py +1011 -0
- networklab-26.4/netsim/data/validate.py +850 -0
- networklab-26.4/netsim/defaults/attributes.yml +245 -0
- networklab-26.4/netsim/devices/arubacx.yml +128 -0
- networklab-26.4/netsim/devices/cat8000v.yml +37 -0
- networklab-26.4/netsim/devices/cisco8000v.py +35 -0
- networklab-26.4/netsim/devices/crpd.py +46 -0
- networklab-26.4/netsim/devices/crpd.yml +50 -0
- networklab-26.4/netsim/devices/csr.yml +48 -0
- networklab-26.4/netsim/devices/cumulus.yml +158 -0
- networklab-26.4/netsim/devices/cumulus_nvue.yml +107 -0
- networklab-26.4/netsim/devices/dellos10.yml +132 -0
- networklab-26.4/netsim/devices/eos.yml +205 -0
- networklab-26.4/netsim/devices/exos.py +70 -0
- networklab-26.4/netsim/devices/exos.yml +55 -0
- networklab-26.4/netsim/devices/fortios.py +14 -0
- networklab-26.4/netsim/devices/fortios.yml +47 -0
- networklab-26.4/netsim/devices/frr.yml +221 -0
- networklab-26.4/netsim/devices/iol.py +55 -0
- networklab-26.4/netsim/devices/iol.yml +43 -0
- networklab-26.4/netsim/devices/ios.yml +155 -0
- networklab-26.4/netsim/devices/iosxr.py +127 -0
- networklab-26.4/netsim/devices/iosxr.yml +49 -0
- networklab-26.4/netsim/devices/junos.py +408 -0
- networklab-26.4/netsim/devices/junos.yml +99 -0
- networklab-26.4/netsim/devices/none.yml +156 -0
- networklab-26.4/netsim/devices/nxos.yml +87 -0
- networklab-26.4/netsim/devices/openbsd.yml +73 -0
- networklab-26.4/netsim/devices/sonic.yml +44 -0
- networklab-26.4/netsim/devices/srlinux.yml +116 -0
- networklab-26.4/netsim/devices/sros.py +132 -0
- networklab-26.4/netsim/devices/sros.yml +123 -0
- networklab-26.4/netsim/devices/vjunos-router.py +408 -0
- networklab-26.4/netsim/devices/vjunos-router.yml +38 -0
- networklab-26.4/netsim/devices/vjunos-switch.yml +38 -0
- networklab-26.4/netsim/devices/vmx.py +408 -0
- networklab-26.4/netsim/devices/vptx.py +58 -0
- networklab-26.4/netsim/devices/vptx.yml +48 -0
- networklab-26.4/netsim/devices/vsrx.py +408 -0
- networklab-26.4/netsim/devices/vyos.py +26 -0
- networklab-26.4/netsim/devices/vyos.yml +110 -0
- networklab-26.4/netsim/devices/xr.yml +111 -0
- networklab-26.4/netsim/extra/bgp.originate/plugin.py +53 -0
- networklab-26.4/netsim/extra/bgp.policy/iosxr.j2 +48 -0
- networklab-26.4/netsim/extra/bgp.policy/plugin.py +345 -0
- networklab-26.4/netsim/extra/bgp.session/defaults.yml +103 -0
- networklab-26.4/netsim/extra/bgp.session/ios.j2 +99 -0
- networklab-26.4/netsim/extra/bgp.session/iosxr.j2 +85 -0
- networklab-26.4/netsim/extra/bgp.session/openbsd.j2 +1 -0
- networklab-26.4/netsim/extra/bgp.session/plugin.py +256 -0
- networklab-26.4/netsim/extra/bgp.session/sros.j2 +61 -0
- networklab-26.4/netsim/extra/ebgp.multihop/arubacx.j2 +27 -0
- networklab-26.4/netsim/extra/ebgp.multihop/cumulus_nvue.j2 +24 -0
- networklab-26.4/netsim/extra/ebgp.multihop/dellos10.j2 +32 -0
- networklab-26.4/netsim/extra/ebgp.multihop/eos.j2 +27 -0
- networklab-26.4/netsim/extra/ebgp.multihop/frr.j2 +28 -0
- networklab-26.4/netsim/extra/ebgp.multihop/ios.j2 +26 -0
- networklab-26.4/netsim/extra/ebgp.multihop/iosxr.j2 +27 -0
- networklab-26.4/netsim/extra/ebgp.multihop/junos.j2 +43 -0
- networklab-26.4/netsim/extra/ebgp.multihop/srlinux.j2 +33 -0
- networklab-26.4/netsim/extra/ebgp.multihop/sros.j2 +27 -0
- networklab-26.4/netsim/extra/ospf.areas/bird.j2 +1 -0
- networklab-26.4/netsim/install/libvirt/exos.txt +61 -0
- networklab-26.4/netsim/install/libvirt/exos.xml.j2 +52 -0
- networklab-26.4/netsim/install/libvirt/fortios/openstack/latest/user_data +39 -0
- networklab-26.4/netsim/modules/__init__.py +537 -0
- networklab-26.4/netsim/modules/_routing.py +898 -0
- networklab-26.4/netsim/modules/bgp.py +1021 -0
- networklab-26.4/netsim/modules/bgp.yml +162 -0
- networklab-26.4/netsim/modules/evpn.py +640 -0
- networklab-26.4/netsim/modules/evpn.yml +39 -0
- networklab-26.4/netsim/modules/mpls.py +280 -0
- networklab-26.4/netsim/modules/mpls.yml +37 -0
- networklab-26.4/netsim/modules/routing/__init__.py +161 -0
- networklab-26.4/netsim/modules/routing/aspath.py +40 -0
- networklab-26.4/netsim/modules/routing/clist.py +154 -0
- networklab-26.4/netsim/modules/routing/normalize.py +198 -0
- networklab-26.4/netsim/modules/routing/policy.py +251 -0
- networklab-26.4/netsim/modules/routing/prefix.py +124 -0
- networklab-26.4/netsim/modules/sr.py +81 -0
- networklab-26.4/netsim/modules/sr.yml +57 -0
- networklab-26.4/netsim/modules/srv6.py +130 -0
- networklab-26.4/netsim/modules/vrf.py +604 -0
- networklab-26.4/netsim/modules/vxlan.py +249 -0
- networklab-26.4/netsim/outputs/ansible.py +276 -0
- networklab-26.4/netsim/outputs/config.py +103 -0
- networklab-26.4/netsim/providers/__init__.py +430 -0
- networklab-26.4/netsim/providers/clab.yml +55 -0
- networklab-26.4/netsim/reports/devices.html.j2 +20 -0
- networklab-26.4/netsim/reports/devices.j2 +17 -0
- networklab-26.4/netsim/reports/devices.md.j2 +10 -0
- networklab-26.4/netsim/reports/isis-interfaces.html.j2 +33 -0
- networklab-26.4/netsim/reports/isis-interfaces.md.j2 +15 -0
- networklab-26.4/netsim/templates/provider/clab/crpd/hosts.j2 +1 -0
- networklab-26.4/netsim/templates/provider/clab/crpd/netlab-config.j2 +19 -0
- networklab-26.4/netsim/templates/provider/clab/cumulus/hosts.j2 +1 -0
- networklab-26.4/netsim/templates/provider/clab/frr/hosts.j2 +1 -0
- networklab-26.4/netsim/templates/provider/clab/iosxr/netlab-config.j2 +8 -0
- networklab-26.4/netsim/templates/provider/clab/linux/hosts.j2 +15 -0
- networklab-26.4/netsim/templates/provider/clab/srlinux/hosts.j2 +1 -0
- networklab-26.4/netsim/templates/provider/libvirt/exos-domain.j2 +15 -0
- networklab-26.4/netsim/tools/suzieq.yml +25 -0
- networklab-26.4/netsim/utils/routing.py +159 -0
- networklab-26.4/netsim/utils/templates.py +374 -0
- networklab-26.4/netsim/validate/_common.py +91 -0
- networklab-26.4/netsim/validate/bgp/eos.py +271 -0
- networklab-26.4/netsim/validate/bgp/frr.py +273 -0
- networklab-26.4/netsim/validate/crpd.py +7 -0
- networklab-26.4/netsim/validate/ospf/eos.py +121 -0
- networklab-26.4/netsim/validate/ospf/frr.py +168 -0
- networklab-26.4/networklab.egg-info/PKG-INFO +113 -0
- networklab-26.4/networklab.egg-info/SOURCES.txt +1087 -0
- networklab-26.2/PKG-INFO +0 -113
- networklab-26.2/README.md +0 -70
- networklab-26.2/netsim/__init__.py +0 -18
- networklab-26.2/netsim/ansible/tasks/deploy-custom-config.yml +0 -76
- networklab-26.2/netsim/ansible/tasks/fortinet.fortios.fortios/initial.yml +0 -55
- networklab-26.2/netsim/ansible/templates/bgp/arubacx.j2 +0 -55
- networklab-26.2/netsim/ansible/templates/bgp/arubacx.macro.j2 +0 -46
- networklab-26.2/netsim/ansible/templates/bgp/cumulus_nvue.macro.j2 +0 -125
- networklab-26.2/netsim/ansible/templates/bgp/dellos10.j2 +0 -57
- networklab-26.2/netsim/ansible/templates/bgp/eos.j2 +0 -105
- networklab-26.2/netsim/ansible/templates/bgp/frr.j2 +0 -97
- networklab-26.2/netsim/ansible/templates/bgp/ios.j2 +0 -66
- networklab-26.2/netsim/ansible/templates/bgp/ios.macro.j2 +0 -49
- networklab-26.2/netsim/ansible/templates/bgp/iosxr.j2 +0 -94
- networklab-26.2/netsim/ansible/templates/bgp/junos.j2 +0 -85
- networklab-26.2/netsim/ansible/templates/bgp/junos.macro.j2 +0 -12
- networklab-26.2/netsim/ansible/templates/bgp/junos.policy.j2 +0 -139
- networklab-26.2/netsim/ansible/templates/bgp/nxos.j2 +0 -60
- networklab-26.2/netsim/ansible/templates/bgp/srlinux.macro.j2 +0 -304
- networklab-26.2/netsim/ansible/templates/bgp/sros.gnmi.macro.j2 +0 -165
- networklab-26.2/netsim/ansible/templates/bgp/vyos.j2 +0 -56
- networklab-26.2/netsim/ansible/templates/evpn/ioll2.j2 +0 -20
- networklab-26.2/netsim/ansible/templates/evpn/ios-common.j2 +0 -54
- networklab-26.2/netsim/ansible/templates/evpn/ios.j2 +0 -13
- networklab-26.2/netsim/ansible/templates/evpn/vjunos-switch.j2 +0 -244
- networklab-26.2/netsim/ansible/templates/isis/junos.j2 +0 -94
- networklab-26.2/netsim/ansible/templates/isis/srlinux.j2 +0 -8
- networklab-26.2/netsim/ansible/templates/isis/srlinux.macro.j2 +0 -68
- networklab-26.2/netsim/ansible/templates/isis/sros.j2 +0 -78
- networklab-26.2/netsim/ansible/templates/mpls/frr.mplsvpn.j2 +0 -14
- networklab-26.2/netsim/ansible/templates/mpls/ios.6pe.j2 +0 -8
- networklab-26.2/netsim/ansible/templates/mpls/ios.j2 +0 -13
- networklab-26.2/netsim/ansible/templates/mpls/ios.mplsvpn.j2 +0 -11
- networklab-26.2/netsim/ansible/templates/mpls/junos.ldp.j2 +0 -25
- networklab-26.2/netsim/ansible/templates/mpls/junos.mplsvpn.j2 +0 -37
- networklab-26.2/netsim/ansible/templates/mpls/sros.bgp.j2 +0 -36
- networklab-26.2/netsim/ansible/templates/mpls/sros.j2 +0 -32
- networklab-26.2/netsim/ansible/templates/mpls/vyos.mplsvpn.j2 +0 -15
- networklab-26.2/netsim/ansible/templates/normalize/eos.j2 +0 -33
- networklab-26.2/netsim/ansible/templates/ospf/srlinux.macro.j2 +0 -64
- networklab-26.2/netsim/ansible/templates/ospf/sros.j2 +0 -80
- networklab-26.2/netsim/ansible/templates/routing/_redistribute.iosxr.j2 +0 -20
- networklab-26.2/netsim/ansible/templates/routing/iosxr.j2 +0 -15
- networklab-26.2/netsim/ansible/templates/routing/junos.j2 +0 -115
- networklab-26.2/netsim/ansible/templates/routing/openbsd.j2 +0 -23
- networklab-26.2/netsim/ansible/templates/routing/srlinux.j2 +0 -62
- networklab-26.2/netsim/ansible/templates/routing/sros.j2 +0 -18
- networklab-26.2/netsim/ansible/templates/sr/eos.j2 +0 -17
- networklab-26.2/netsim/ansible/templates/sr/frr.j2 +0 -26
- networklab-26.2/netsim/ansible/templates/sr/ios.j2 +0 -16
- networklab-26.2/netsim/ansible/templates/sr/junos.j2 +0 -43
- networklab-26.2/netsim/ansible/templates/sr/srlinux.j2 +0 -64
- networklab-26.2/netsim/ansible/templates/sr/sros.j2 +0 -51
- networklab-26.2/netsim/ansible/templates/sr/sros.openconfig.j2 +0 -30
- networklab-26.2/netsim/ansible/templates/vlan/vjunos-router.j2 +0 -32
- networklab-26.2/netsim/ansible/templates/vlan/vptx.j2 +0 -45
- networklab-26.2/netsim/ansible/templates/vrf/arubacx.bgp.j2 +0 -33
- networklab-26.2/netsim/ansible/templates/vrf/dellos10.bgp.j2 +0 -61
- networklab-26.2/netsim/ansible/templates/vrf/eos.bgp.j2 +0 -44
- networklab-26.2/netsim/ansible/templates/vrf/frr.bgp.j2 +0 -46
- networklab-26.2/netsim/ansible/templates/vrf/ios.bgp.j2 +0 -27
- networklab-26.2/netsim/ansible/templates/vrf/iosxr.bgp.j2 +0 -41
- networklab-26.2/netsim/ansible/templates/vrf/junos.bgp.j2 +0 -114
- networklab-26.2/netsim/ansible/templates/vrf/nxos.bgp.j2 +0 -49
- networklab-26.2/netsim/ansible/templates/vrf/srlinux.j2 +0 -91
- networklab-26.2/netsim/ansible/templates/vrf/vyos.bgp.j2 +0 -39
- networklab-26.2/netsim/ansible/templates/vxlan/vjunos-switch.j2 +0 -81
- networklab-26.2/netsim/augment/main.py +0 -129
- networklab-26.2/netsim/cli/ansible.py +0 -74
- networklab-26.2/netsim/cli/config.py +0 -246
- networklab-26.2/netsim/cli/exec.py +0 -65
- networklab-26.2/netsim/cli/initial/deploy.py +0 -158
- networklab-26.2/netsim/cli/show.py +0 -120
- networklab-26.2/netsim/cli/show_commands/__init__.py +0 -65
- networklab-26.2/netsim/cli/show_commands/attributes.py +0 -89
- networklab-26.2/netsim/cli/show_commands/defaults.py +0 -60
- networklab-26.2/netsim/cli/show_commands/devices.py +0 -85
- networklab-26.2/netsim/cli/show_commands/images.py +0 -74
- networklab-26.2/netsim/cli/show_commands/module_support.py +0 -85
- networklab-26.2/netsim/cli/show_commands/modules.py +0 -183
- networklab-26.2/netsim/cli/show_commands/outputs.py +0 -51
- networklab-26.2/netsim/cli/show_commands/providers.py +0 -92
- networklab-26.2/netsim/cli/show_commands/reports.py +0 -120
- networklab-26.2/netsim/cli/status.py +0 -371
- networklab-26.2/netsim/daemons/bird/bgp.j2 +0 -137
- networklab-26.2/netsim/daemons/bird/ospf.j2 +0 -69
- networklab-26.2/netsim/daemons/bird.yml +0 -71
- networklab-26.2/netsim/data/types.py +0 -1003
- networklab-26.2/netsim/data/validate.py +0 -803
- networklab-26.2/netsim/defaults/attributes.yml +0 -244
- networklab-26.2/netsim/devices/arubacx.yml +0 -126
- networklab-26.2/netsim/devices/cat8000v.yml +0 -36
- networklab-26.2/netsim/devices/cisco8000v.py +0 -34
- networklab-26.2/netsim/devices/csr.yml +0 -42
- networklab-26.2/netsim/devices/cumulus.yml +0 -156
- networklab-26.2/netsim/devices/cumulus_nvue.yml +0 -105
- networklab-26.2/netsim/devices/dellos10.yml +0 -129
- networklab-26.2/netsim/devices/eos.yml +0 -201
- networklab-26.2/netsim/devices/fortios.yml +0 -43
- networklab-26.2/netsim/devices/frr.yml +0 -212
- networklab-26.2/netsim/devices/iol.py +0 -39
- networklab-26.2/netsim/devices/iol.yml +0 -38
- networklab-26.2/netsim/devices/ios.yml +0 -153
- networklab-26.2/netsim/devices/iosxr.yml +0 -40
- networklab-26.2/netsim/devices/junos.py +0 -390
- networklab-26.2/netsim/devices/junos.yml +0 -94
- networklab-26.2/netsim/devices/none.yml +0 -152
- networklab-26.2/netsim/devices/nxos.yml +0 -81
- networklab-26.2/netsim/devices/openbsd.yml +0 -53
- networklab-26.2/netsim/devices/sonic.yml +0 -43
- networklab-26.2/netsim/devices/srlinux.yml +0 -109
- networklab-26.2/netsim/devices/sros.py +0 -116
- networklab-26.2/netsim/devices/sros.yml +0 -116
- networklab-26.2/netsim/devices/vjunos-router.py +0 -390
- networklab-26.2/netsim/devices/vjunos-router.yml +0 -31
- networklab-26.2/netsim/devices/vjunos-switch.yml +0 -37
- networklab-26.2/netsim/devices/vmx.py +0 -390
- networklab-26.2/netsim/devices/vptx.py +0 -390
- networklab-26.2/netsim/devices/vptx.yml +0 -40
- networklab-26.2/netsim/devices/vsrx.py +0 -390
- networklab-26.2/netsim/devices/vyos.yml +0 -108
- networklab-26.2/netsim/devices/xr.yml +0 -57
- networklab-26.2/netsim/extra/bgp.originate/defaults.yml +0 -12
- networklab-26.2/netsim/extra/bgp.originate/plugin.py +0 -42
- networklab-26.2/netsim/extra/bgp.policy/plugin.py +0 -345
- networklab-26.2/netsim/extra/bgp.session/defaults.yml +0 -103
- networklab-26.2/netsim/extra/bgp.session/ios.j2 +0 -97
- networklab-26.2/netsim/extra/bgp.session/plugin.py +0 -258
- networklab-26.2/netsim/extra/bgp.session/sros.j2 +0 -62
- networklab-26.2/netsim/extra/ebgp.multihop/arubacx.j2 +0 -27
- networklab-26.2/netsim/extra/ebgp.multihop/cumulus_nvue.j2 +0 -24
- networklab-26.2/netsim/extra/ebgp.multihop/dellos10.j2 +0 -30
- networklab-26.2/netsim/extra/ebgp.multihop/eos.j2 +0 -27
- networklab-26.2/netsim/extra/ebgp.multihop/frr.j2 +0 -28
- networklab-26.2/netsim/extra/ebgp.multihop/ios.j2 +0 -26
- networklab-26.2/netsim/extra/ebgp.multihop/junos.j2 +0 -43
- networklab-26.2/netsim/extra/ebgp.multihop/srlinux.j2 +0 -33
- networklab-26.2/netsim/extra/ebgp.multihop/sros.j2 +0 -27
- networklab-26.2/netsim/install/libvirt/fortios/openstack/latest/user_data +0 -35
- networklab-26.2/netsim/modules/__init__.py +0 -539
- networklab-26.2/netsim/modules/_routing.py +0 -872
- networklab-26.2/netsim/modules/bgp.py +0 -930
- networklab-26.2/netsim/modules/bgp.yml +0 -130
- networklab-26.2/netsim/modules/evpn.py +0 -582
- networklab-26.2/netsim/modules/evpn.yml +0 -38
- networklab-26.2/netsim/modules/mpls.py +0 -284
- networklab-26.2/netsim/modules/mpls.yml +0 -37
- networklab-26.2/netsim/modules/routing/__init__.py +0 -160
- networklab-26.2/netsim/modules/routing/aspath.py +0 -39
- networklab-26.2/netsim/modules/routing/clist.py +0 -153
- networklab-26.2/netsim/modules/routing/normalize.py +0 -195
- networklab-26.2/netsim/modules/routing/policy.py +0 -249
- networklab-26.2/netsim/modules/routing/prefix.py +0 -110
- networklab-26.2/netsim/modules/sr.py +0 -9
- networklab-26.2/netsim/modules/sr.yml +0 -13
- networklab-26.2/netsim/modules/srv6.py +0 -127
- networklab-26.2/netsim/modules/vrf.py +0 -595
- networklab-26.2/netsim/modules/vxlan.py +0 -249
- networklab-26.2/netsim/outputs/ansible.py +0 -264
- networklab-26.2/netsim/outputs/config.py +0 -91
- networklab-26.2/netsim/providers/__init__.py +0 -430
- networklab-26.2/netsim/providers/clab.yml +0 -55
- networklab-26.2/netsim/templates/provider/clab/cumulus/hosts-common.j2 +0 -38
- networklab-26.2/netsim/templates/provider/clab/cumulus/hosts.j2 +0 -15
- networklab-26.2/netsim/templates/provider/clab/frr/hosts-common.j2 +0 -38
- networklab-26.2/netsim/templates/provider/clab/frr/hosts.j2 +0 -15
- networklab-26.2/netsim/templates/provider/clab/linux/hosts-common.j2 +0 -38
- networklab-26.2/netsim/templates/provider/clab/linux/hosts.j2 +0 -15
- networklab-26.2/netsim/templates/provider/clab/srlinux/hosts-common.j2 +0 -38
- networklab-26.2/netsim/templates/provider/clab/srlinux/hosts.j2 +0 -15
- networklab-26.2/netsim/tools/suzieq.yml +0 -25
- networklab-26.2/netsim/utils/routing.py +0 -154
- networklab-26.2/netsim/utils/templates.py +0 -373
- networklab-26.2/netsim/validate/_common.py +0 -90
- networklab-26.2/netsim/validate/bgp/eos.py +0 -271
- networklab-26.2/netsim/validate/bgp/frr.py +0 -273
- networklab-26.2/netsim/validate/ospf/eos.py +0 -121
- networklab-26.2/netsim/validate/ospf/frr.py +0 -168
- networklab-26.2/networklab.egg-info/PKG-INFO +0 -113
- networklab-26.2/networklab.egg-info/SOURCES.txt +0 -1018
- {networklab-26.2 → networklab-26.4}/LICENSE.md +0 -0
- {networklab-26.2 → networklab-26.4}/MANIFEST.in +0 -0
- {networklab-26.2 → networklab-26.4}/netlab +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/collect-configs.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/config.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/create-config.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/device-ready.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/initial-config.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/missing.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/reload-config.ansible +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/create-config.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/create-custom-config.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/arcos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/arubacx.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/asa.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/cumulus.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/cumulus_nvue.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/dellos10.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/eos.yml +0 -0
- /networklab-26.2/netsim/ansible/tasks/deploy-config/fortinet.fortios.fortios.yml → /networklab-26.4/netsim/ansible/tasks/deploy-config/fortios.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/frr.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/ios.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/iosxr.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/junos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/linux-clab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/linux.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/missing.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/netscaler.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/none.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/nxos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/openbsd.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/routeros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/routeros7.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/sonic.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/srlinux.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/sros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/vyos-script.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-config/vyos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/deploy-module.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/_config_cleanup.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/arcos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/arubacx.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/asa.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/cumulus.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/cumulus_nvue.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/dellos10.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/eos.yml +0 -0
- /networklab-26.2/netsim/ansible/tasks/fetch-config/fortinet.fortios.fortios.yml → /networklab-26.4/netsim/ansible/tasks/fetch-config/fortios.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/frr.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/ios.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/iosxr.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/junos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/nxos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/routeros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/routeros7.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/sonic.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/srlinux.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/sros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/fetch-config/vyos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/frr/deploy-config.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/frr/initial-clab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/initial-config.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/linux/dhcp.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/cumulus_nvue.yml +0 -0
- /networklab-26.2/netsim/ansible/tasks/readiness-check/fortinet.fortios.fortios-clab.yml → /networklab-26.4/netsim/ansible/tasks/readiness-check/fortios-clab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/junos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/netscaler.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/nxos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/sros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/srsim-hardware.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/srsim.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/ssh.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/readiness-check/vyos-clab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/reload-config/_copy_config.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/reload-config/eos.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/reload-config/ios.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/reload-config/srlinux.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/vmx/initial.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/tasks/wait-for-ready.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/none.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bfd/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/asa.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/asa.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/dellos10.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/eos.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/none.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/routeros.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/routeros7.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/sonic.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/bgp/vyos.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/dnsmasq.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/eos.server.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/ios.server.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/linux-isc-dhcp-relay.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/dhcp/linux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/eigrp/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/eigrp/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/frr.evpn-config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/evpn/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/frr.vrrp-config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/gateway/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/_debug_commands.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/arcos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/arubacx.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/arubacx.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/asa.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/bird-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/cat8000v.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/csr.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/dellos10.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/eos.vrf.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/initial/fortinet.fortios.fortios.j2 → /networklab-26.4/netsim/ansible/templates/initial/fortios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/frr/daemons.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/iol.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/iol.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/ioll2.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/ios.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/ios.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/iosvl2.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/iosxr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/junos.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/junos.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/bash_profile.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/create-bond.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/hosts-common.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/hosts.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/packages.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/ubuntu.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/vanilla-ifconfig.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux/vanilla.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/linux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/netscaler.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/nxos.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/openbsd.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros7.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/routeros7.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/sonic.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/sros.openconfig.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/vyos.vlan.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/initial/vyos.vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/asa.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/eos.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/frr.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/iosxr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/sros.openconfig.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/isis/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/linux-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/linux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/lag/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/missing.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/arubacx.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/arubacx.mplsvpn.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/eos.6pe.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/eos.bgp-lu.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/eos.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/eos.mplsvpn.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/frr.frr-config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/frr.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/ios.bgp-lu.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/ios.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros.mplsvpn.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros7.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/routeros7.mplsvpn.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/srlinux.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/sros.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/sros.mplsvpn.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/mpls/vyos.ldp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/normalize/ioll2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/normalize/iosvl2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/arcos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/arubacx.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/arubacx.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/asa.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/asa.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/cumulus.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/cumulus.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/dellos10.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/dellos10.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/dellos10.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/eos.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/eos.ospfv3.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/ospf/fortinet.fortios.fortios.j2 → /networklab-26.4/netsim/ansible/templates/ospf/fortios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/frr.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/frr.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/ios.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/ios.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/iosxr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/junos.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/none.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/nxos.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/nxos.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/openbsd.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/openbsd.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/openbsd.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/routeros7.ospf-include.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/sros.openconfig.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/vyos.default.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/vyos.ospfv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ospf/vyos.ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/frr.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/ios.macro.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/openbsd.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/openbsd.ripng.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/openbsd.ripv2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/ripv2/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_default.ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_prefix_list_ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_prefix_list_vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_redistribute.cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_redistribute.dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_redistribute.eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_redistribute.frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_redistribute.ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_route_map_ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/_route_policy_vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/ios.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/routing/_prefix_list_junos.j2 → /networklab-26.4/netsim/ansible/templates/routing/junos/prefix_list.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/routing/_route_policy_junos.j2 → /networklab-26.4/netsim/ansible/templates/routing/junos/route_policy.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/linux/ubuntu.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/linux/vanilla.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/linux-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/linux.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/routing/_redistribute.srlinux.j2 → /networklab-26.4/netsim/ansible/templates/routing/srlinux/redistribute.j2 +0 -0
- /networklab-26.2/netsim/ansible/templates/routing/_redistribute.sros.j2 → /networklab-26.4/netsim/ansible/templates/routing/sros/redistribute.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/routing/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/srv6/frr.bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/srv6/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/srv6/ios.bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/srv6/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/srv6/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/stp/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/cat8000v.essentials.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/cat8000v.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/cisco8000v.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/csr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/iol.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/ioll2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/iosvl2.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/linux-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/vjunos-switch.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/vmx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/vsrx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vlan/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/arubacx.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/arubacx.ospfv3-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/dellos10.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/frr.frr-config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/iosxr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/nxos.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros.bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros7.bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/routeros7.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/vyos.ospfv2-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vrf/vyos.ospfv3-vrf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/ansible/templates/vxlan/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/api/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/addressing.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/components.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/config.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/devices.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/groups.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/links.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/nodes.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/tools.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/topology.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/augment/validate.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/_nodeset.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/alias.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/api.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/capture.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/clab.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/clab_actions/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/clab_actions/build.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/clab_actions/cleanup.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/clab_actions/tarball.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/collect.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/connect.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/create.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/defaults.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/down.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/empty.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/external_commands.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/graph.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/help.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/initial/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/initial/configs.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/initial/ready.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/initial/utils.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/inspect.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/install.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/libvirt/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/libvirt/config.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/libvirt/package.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/libvirt/remove.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/read.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/report.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/restart.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/show-usage.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/tc.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/test.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/up.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/usage.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/usage.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/usage_actions/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/usage_actions/show.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/usage_actions/utils.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/devices.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/parse.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/report.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/source.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/suzieq.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/tests.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/validate/utils.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/cli/version.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/common.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/Dockerfile +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/Dockerfile.v3 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/bfd.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/bird.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/protocols.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/radv.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/bird/routing.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/dnsmasq/Dockerfile +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/dnsmasq/dhcp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/dnsmasq/dnsmasq.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/dnsmasq.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/kind/initial.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/kind.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/daemons/netscaler/Dockerfile.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/data/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/data/filemaps.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/data/global_vars.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/addressing.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/automation.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/const.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/hints.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/multilab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/netlab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/paths.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/ports.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/defaults/warnings.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/_common.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/arubacx.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/asav.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/asav.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/bird.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/cat8000v.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/cisco8000v.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/csr.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/cumulus.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/cumulus_nvue.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/dellos10.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/eos.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/frr.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/ioll2.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/ioll2.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/iosv.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/iosv.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/iosvl2.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/iosvl2.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/linux.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/linux.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/netscaler.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/nxos.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/openbsd.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/routeros.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/routeros7.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/srlinux.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/srsim.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/srsim.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/unknown.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/unknown.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/vjunos-switch.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/vmx.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/devices/vsrx.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.domain/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.domain/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/_route_map_ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/simple-attributes.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.policy/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/_sample_bfd_template.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/bird.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/nxos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/routeros7.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bgp.session/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bonding/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bonding/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bonding/linux-clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bonding/linux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/bonding/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/check.config/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ebgp.multihop/cumulus.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ebgp.multihop/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ebgp.multihop/ebgp-multihop-load-balancing.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ebgp.multihop/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ebgp.utils/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/evpn.multihoming/vjunos-switch.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/fabric/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/fabric/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/files/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/files/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/firewall.zonebased/defaults.yml +0 -0
- /networklab-26.2/netsim/extra/firewall.zonebased/deploy.fortinet.fortios.fortios.yml → /networklab-26.4/netsim/extra/firewall.zonebased/deploy.fortios.yml +0 -0
- /networklab-26.2/netsim/extra/firewall.zonebased/fortinet.fortios.fortios.j2 → /networklab-26.4/netsim/extra/firewall.zonebased/fortios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/firewall.zonebased/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/firewall.zonebased/vsrx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/firewall.zonebased/vyos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/kind/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/kind/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/mlag.vtep/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/mlag.vtep/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/multilab/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/node.clone/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/node.clone/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/none/none.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/arubacx.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/eos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/frr.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/ios.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/junos.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/ospf.areas/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/proxy-arp/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/proxy-arp/srlinux.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/proxy-arp/sros.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/test.fixup/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/test.vrf_check/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/vrrp.version/cumulus_nvue.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/vrrp.version/defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/vrrp.version/dellos10.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/extra/vrrp.version/plugin.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/ansible.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/apt-get-update.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/containerlab.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/graph.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/grpc.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/install.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/arubacx.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/asav/day0-config +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/asav.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/asav.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/cat8000v/iosxe_config.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/cat8000v.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/cat8000v.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/csr.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/dellos10/run.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/dellos10.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/eos.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/eos.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/fortios.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/fortios.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/frr/meta-data +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/frr/user-data.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/frr.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/iosv.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/iosv.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/iosvl2.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/iosxr/iosxr_config.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/iosxr.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/nxos.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/nxos.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/openbsd/meta-data +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/openbsd/network-config +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/openbsd/user-data +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/openbsd.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/openbsd.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/routeros7.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/sonic.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/sonic.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vptx/juniper.conf +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vptx/make-config.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vptx/run.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vptx.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vptx.xml.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vsrx/juniper.conf +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt/vsrx.txt +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/libvirt.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/install/ubuntu.sh +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/_dataplane.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/bfd.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/bfd.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/dhcp.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/dhcp.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/eigrp.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/eigrp.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/gateway.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/gateway.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/initial.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/isis.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/isis.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/lag.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/lag.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/ospf.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/ospf.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/ripv2.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/ripv2.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/routing/static.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/routing.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/srv6.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/stp.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/stp.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/vlan.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/vlan.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/vrf.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/modules/vxlan.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/_graph.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/ansible.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/common.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/d2.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/d2.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/devices.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/format.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/graph.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/graph.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/graphite.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/json.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/none.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/pickle.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/provider.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/report.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/tools.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/outputs/yaml.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/clab.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/external.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/external.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/libvirt.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/libvirt.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/virtualbox.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/providers/virtualbox.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/py.typed +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/addressing-link.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/addressing-node.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/addressing.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/addressing.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/addressing.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-asn.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-asn.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-neighbor-short.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-neighbor.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-neighbor.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp-prefix.include.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/isis-nodes.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/isis-nodes.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/isis-nodes.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/mgmt.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/mgmt.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/nodes.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospf-areas.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospf-areas.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospf-areas.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospf-utils.include.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospfv3.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospfv3.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ospfv3.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/page.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/ssh_config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/wiring-columns.include.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/wiring.html.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/wiring.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/reports/wiring.md.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/roles/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/roles/bridge.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/roles/host.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/roles/router.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/ansible.cfg.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/clab.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/cumulus/interfaces.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/eos/ceos-config.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/frr/daemons.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/iol/ifstate.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/clab/ioll2/ifstate.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/external/external.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/Vagrantfile.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/_debian_vagrant_password.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/arcos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/arubacx-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/asav-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/cat8000v-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/csr-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/cumulus-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/cumulus_nvue-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/define-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/dellos10-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/eos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/fortios-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/forwarded-ports.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/frr-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/iosv-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/iosvl2-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/iosxr-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/libvirt-bridge.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/libvirt-tunnel.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/linux-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/none-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/nxos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/openbsd-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/routeros-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/routeros7-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/sonic-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/vagrant-libvirt.xml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/vptx-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/vsrx-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/libvirt/vyos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/Vagrantfile.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/arcos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/cumulus-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/eos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/frr-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/linux-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/nxos-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/virtualbox-network.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/virtualbox-ports.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/provider/virtualbox/vsrx-domain.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/tests/clab.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/tests/grpc.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/tests/libvirt.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/templates/tests/virtualbox.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/edgeshark.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/graphite.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/graphite.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nso.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/inventory/groups.yaml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/inventory/hosts.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/nr-config.yaml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/tests/test_bgp.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/tests/test_interfaces.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts/tests/test_ospf.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/nuts.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/suzieq/suzieq-cfg.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/tools/suzieq/suzieq.inventory.j2 +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/topology-defaults.yml +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/callback.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/files.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/filters.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/linuxbridge.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/log.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/read.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/sort.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/stats.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/status.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/strings.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/utils/versioning.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/bgp/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/cumulus.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/eos.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/frr.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/isis/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/isis/frr.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/linux.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/ospf/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/route/__init__.py +0 -0
- {networklab-26.2 → networklab-26.4}/netsim/validate/route/frr.py +0 -0
- {networklab-26.2 → networklab-26.4}/networklab.egg-info/dependency_links.txt +0 -0
- {networklab-26.2 → networklab-26.4}/networklab.egg-info/requires.txt +0 -0
- {networklab-26.2 → networklab-26.4}/networklab.egg-info/top_level.txt +0 -0
- {networklab-26.2 → networklab-26.4}/requirements.txt +0 -0
- {networklab-26.2 → networklab-26.4}/setup.cfg +0 -0
- {networklab-26.2 → networklab-26.4}/setup.py +0 -0
- {networklab-26.2 → networklab-26.4}/tests/test_transformation.py +0 -0
networklab-26.4/PKG-INFO
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: networklab
|
|
3
|
+
Version: 26.4
|
|
4
|
+
Summary: CLI-based Virtual Networking Lab Abstraction Layer
|
|
5
|
+
Home-page: https://github.com/ipspace/netlab
|
|
6
|
+
Author: Ivan Pepelnjak
|
|
7
|
+
Author-email: ip@ipspace.net
|
|
8
|
+
Classifier: Topic :: Utilities
|
|
9
|
+
Classifier: Programming Language :: Python
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
19
|
+
Classifier: Operating System :: MacOS
|
|
20
|
+
Requires-Python: >=3.8
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE.md
|
|
23
|
+
Requires-Dist: Jinja2>=3.1.4
|
|
24
|
+
Requires-Dist: PyYAML>=5.0.0
|
|
25
|
+
Requires-Dist: netaddr>=0.8.0
|
|
26
|
+
Requires-Dist: python-box!=7.3.1,~=7.2
|
|
27
|
+
Requires-Dist: importlib_resources
|
|
28
|
+
Requires-Dist: typing-extensions>=4.3.0
|
|
29
|
+
Requires-Dist: filelock>=3.16.1
|
|
30
|
+
Requires-Dist: packaging
|
|
31
|
+
Requires-Dist: requests
|
|
32
|
+
Requires-Dist: rich
|
|
33
|
+
Dynamic: author
|
|
34
|
+
Dynamic: author-email
|
|
35
|
+
Dynamic: classifier
|
|
36
|
+
Dynamic: description
|
|
37
|
+
Dynamic: description-content-type
|
|
38
|
+
Dynamic: home-page
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
Dynamic: requires-dist
|
|
41
|
+
Dynamic: requires-python
|
|
42
|
+
Dynamic: summary
|
|
43
|
+
|
|
44
|
+
# Overview
|
|
45
|
+
|
|
46
|
+
*[netlab](https://netlab.tools)* is bringing infrastructure-as-code concepts to networking labs. You'll describe your high-level network topology and routing design in a YAML file, and the tools in this repository will
|
|
47
|
+
|
|
48
|
+
* Create *Vagrantfile* configuration file for *libvirt/KVM* environment
|
|
49
|
+
* Create *containerlab* configuration file to run Docker containers
|
|
50
|
+
* Create Ansible inventory and configuration file
|
|
51
|
+
* Create IPv4 and IPv6 addressing plan and OSPFv2, OSPFv3, EIGRP, IS-IS, RIPv2, RIPng, and BGP routing design
|
|
52
|
+
* Configure IPv4, IPv6, DHCP, DHCPv6, VLANs, VRFs, VXLAN, LLDP, BFD, OSPFv2, OSPFv3, EIGRP, IS-IS, BGP, RIPv2, RIPng, VRRP, LACP, LAG, MLAG, link bonding, STP, anycast gateways, static routes, route maps, prefix lists, AS-path prefix lists, route redistribution, default route origination, MPLS, BGP-LU, L3VPN (VPNv4 + VPNv6), 6PE, EVPN, SR-MPLS, or SRv6 on your lab devices.
|
|
53
|
+
* Create graphs and reports of your lab topology and BGP, IS-IS, and OSPF routing
|
|
54
|
+
* Configure and manage (virtual) link impairment
|
|
55
|
+
* Provide local- or remote traffic capture capabilities
|
|
56
|
+
|
|
57
|
+
Instead of wasting time creating a lab topology in a GUI and configuring tedious details, you'll start with a preconfigured lab that meets your high-level specifications (aka _intent_).
|
|
58
|
+
|
|
59
|
+
Interested? [Read the documentation](https://netlab.tools) (also available on [GitHub Pages](https://ipspace.github.io/netlab/)) and [installation guidelines](https://netlab.tools/install/).
|
|
60
|
+
|
|
61
|
+
## Releases
|
|
62
|
+
|
|
63
|
+
The latest release is [release 26.04](https://github.com/ipspace/netlab/releases/tag/release_26.04). It should be pretty stable, but if you encounter bugs, please report them as [GitHub issues](https://github.com/ipspace/netlab/issues/new/choose) and use [release 26.03](https://github.com/ipspace/netlab/releases/tag/release_26.03).
|
|
64
|
+
|
|
65
|
+
<!--
|
|
66
|
+
or [1.8.4-post2](https://github.com/ipspace/netlab/releases/tag/release_1.8.4-post2).
|
|
67
|
+
|
|
68
|
+
If you encounter bugs using release 1.7.x, please downgrade to [1.6.4](https://github.com/ipspace/netlab/releases/tag/release_1.6.4) and [open a GitHub issue](https://github.com/ipspace/netlab/issues).
|
|
69
|
+
-->
|
|
70
|
+
|
|
71
|
+
## An Overview of CLI Commands
|
|
72
|
+
|
|
73
|
+
**netlab up**
|
|
74
|
+
: Uses **[netlab create](https://netlab.tools/netlab/create/)** to create configuration files, starts the virtual lab, and uses **[netlab initial](https://netlab.tools/netlab/initial/)** to deploy device configurations, including IP addressing, LLDP, OSPF, BGP, IS-IS, EIGRP, VRRP, VLANs, VRFs, MPLS, SR-MPLS, VXLAN, EVPN, and SRv6. [More details](https://netlab.tools/netlab/up/)
|
|
75
|
+
|
|
76
|
+
**netlab down**
|
|
77
|
+
: Destroys the virtual lab. [More details](https://netlab.tools/netlab/down/)
|
|
78
|
+
|
|
79
|
+
**netlab restart**
|
|
80
|
+
: Restart and/or reconfigure the virtual lab. [More details](https://netlab.tools/netlab/restart/)
|
|
81
|
+
|
|
82
|
+
**netlab config**
|
|
83
|
+
: [Applies additional Jinja2 configuration templates](https://netlab.tools/netlab/config/) to network devices.
|
|
84
|
+
|
|
85
|
+
**netlab collect**
|
|
86
|
+
: Using Ansible fact gathering or other device-specific Ansible modules, [collects device configurations](https://netlab.tools/netlab/collect/) and saves them in the specified directory (default: **config**).
|
|
87
|
+
|
|
88
|
+
**netlab connect**
|
|
89
|
+
: Use SSH or **docker exec** to [connect to a lab device](https://netlab.tools/netlab/connect/) using device names, management network IP addresses (**ansible_host**), SSH port, and username/passwords specified in lab topology or *netlab* device defaults.
|
|
90
|
+
|
|
91
|
+
**netlab exec**
|
|
92
|
+
: Use SSH or **docker exec** to [execute a command on one or more network devices](https://netlab.tools/netlab/exec/) using device names, management network IP addresses (**ansible_host**), SSH port, and username/passwords specified in lab topology or *netlab* device defaults.
|
|
93
|
+
|
|
94
|
+
**netlab capture**
|
|
95
|
+
: [Perform packet capture](https://netlab.tools/netlab/capture/) on VM- and container interfaces
|
|
96
|
+
|
|
97
|
+
**netlab tc**
|
|
98
|
+
: Disable, enable, display, or modify [link impairment](https://netlab.tools/links/#links-netem) parameters
|
|
99
|
+
|
|
100
|
+
**netlab report**
|
|
101
|
+
: Creates a report from the transformed lab topology data. [More details](https://netlab.tools/netlab/report/)
|
|
102
|
+
|
|
103
|
+
**netlab graph**
|
|
104
|
+
: Creates a lab topology graph description in Graphviz or D2 format. [More details](https://netlab.tools/netlab/graph/)
|
|
105
|
+
|
|
106
|
+
**netlab show**
|
|
107
|
+
: Display system settings in tabular, text, or YAML format. [More details](https://netlab.tools/netlab/show/)
|
|
108
|
+
|
|
109
|
+
**netlab defaults**
|
|
110
|
+
: Display and manage system defaults. [More details](https://netlab.tools/netlab/defaults/)
|
|
111
|
+
|
|
112
|
+
**netlab usage**
|
|
113
|
+
: Display and manage usage statistics. [More details](https://netlab.tools/netlab/usage/)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
*[netlab](https://netlab.tools)* is bringing infrastructure-as-code concepts to networking labs. You'll describe your high-level network topology and routing design in a YAML file, and the tools in this repository will
|
|
4
|
+
|
|
5
|
+
* Create *Vagrantfile* configuration file for *libvirt/KVM* environment
|
|
6
|
+
* Create *containerlab* configuration file to run Docker containers
|
|
7
|
+
* Create Ansible inventory and configuration file
|
|
8
|
+
* Create IPv4 and IPv6 addressing plan and OSPFv2, OSPFv3, EIGRP, IS-IS, RIPv2, RIPng, and BGP routing design
|
|
9
|
+
* Configure IPv4, IPv6, DHCP, DHCPv6, VLANs, VRFs, VXLAN, LLDP, BFD, OSPFv2, OSPFv3, EIGRP, IS-IS, BGP, RIPv2, RIPng, VRRP, LACP, LAG, MLAG, link bonding, STP, anycast gateways, static routes, route maps, prefix lists, AS-path prefix lists, route redistribution, default route origination, MPLS, BGP-LU, L3VPN (VPNv4 + VPNv6), 6PE, EVPN, SR-MPLS, or SRv6 on your lab devices.
|
|
10
|
+
* Create graphs and reports of your lab topology and BGP, IS-IS, and OSPF routing
|
|
11
|
+
* Configure and manage (virtual) link impairment
|
|
12
|
+
* Provide local- or remote traffic capture capabilities
|
|
13
|
+
|
|
14
|
+
Instead of wasting time creating a lab topology in a GUI and configuring tedious details, you'll start with a preconfigured lab that meets your high-level specifications (aka _intent_).
|
|
15
|
+
|
|
16
|
+
Interested? [Read the documentation](https://netlab.tools) (also available on [GitHub Pages](https://ipspace.github.io/netlab/)) and [installation guidelines](https://netlab.tools/install/).
|
|
17
|
+
|
|
18
|
+
## Releases
|
|
19
|
+
|
|
20
|
+
The latest release is [release 26.04](https://github.com/ipspace/netlab/releases/tag/release_26.04). It should be pretty stable, but if you encounter bugs, please report them as [GitHub issues](https://github.com/ipspace/netlab/issues/new/choose) and use [release 26.03](https://github.com/ipspace/netlab/releases/tag/release_26.03).
|
|
21
|
+
|
|
22
|
+
<!--
|
|
23
|
+
or [1.8.4-post2](https://github.com/ipspace/netlab/releases/tag/release_1.8.4-post2).
|
|
24
|
+
|
|
25
|
+
If you encounter bugs using release 1.7.x, please downgrade to [1.6.4](https://github.com/ipspace/netlab/releases/tag/release_1.6.4) and [open a GitHub issue](https://github.com/ipspace/netlab/issues).
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
## An Overview of CLI Commands
|
|
29
|
+
|
|
30
|
+
**netlab up**
|
|
31
|
+
: Uses **[netlab create](https://netlab.tools/netlab/create/)** to create configuration files, starts the virtual lab, and uses **[netlab initial](https://netlab.tools/netlab/initial/)** to deploy device configurations, including IP addressing, LLDP, OSPF, BGP, IS-IS, EIGRP, VRRP, VLANs, VRFs, MPLS, SR-MPLS, VXLAN, EVPN, and SRv6. [More details](https://netlab.tools/netlab/up/)
|
|
32
|
+
|
|
33
|
+
**netlab down**
|
|
34
|
+
: Destroys the virtual lab. [More details](https://netlab.tools/netlab/down/)
|
|
35
|
+
|
|
36
|
+
**netlab restart**
|
|
37
|
+
: Restart and/or reconfigure the virtual lab. [More details](https://netlab.tools/netlab/restart/)
|
|
38
|
+
|
|
39
|
+
**netlab config**
|
|
40
|
+
: [Applies additional Jinja2 configuration templates](https://netlab.tools/netlab/config/) to network devices.
|
|
41
|
+
|
|
42
|
+
**netlab collect**
|
|
43
|
+
: Using Ansible fact gathering or other device-specific Ansible modules, [collects device configurations](https://netlab.tools/netlab/collect/) and saves them in the specified directory (default: **config**).
|
|
44
|
+
|
|
45
|
+
**netlab connect**
|
|
46
|
+
: Use SSH or **docker exec** to [connect to a lab device](https://netlab.tools/netlab/connect/) using device names, management network IP addresses (**ansible_host**), SSH port, and username/passwords specified in lab topology or *netlab* device defaults.
|
|
47
|
+
|
|
48
|
+
**netlab exec**
|
|
49
|
+
: Use SSH or **docker exec** to [execute a command on one or more network devices](https://netlab.tools/netlab/exec/) using device names, management network IP addresses (**ansible_host**), SSH port, and username/passwords specified in lab topology or *netlab* device defaults.
|
|
50
|
+
|
|
51
|
+
**netlab capture**
|
|
52
|
+
: [Perform packet capture](https://netlab.tools/netlab/capture/) on VM- and container interfaces
|
|
53
|
+
|
|
54
|
+
**netlab tc**
|
|
55
|
+
: Disable, enable, display, or modify [link impairment](https://netlab.tools/links/#links-netem) parameters
|
|
56
|
+
|
|
57
|
+
**netlab report**
|
|
58
|
+
: Creates a report from the transformed lab topology data. [More details](https://netlab.tools/netlab/report/)
|
|
59
|
+
|
|
60
|
+
**netlab graph**
|
|
61
|
+
: Creates a lab topology graph description in Graphviz or D2 format. [More details](https://netlab.tools/netlab/graph/)
|
|
62
|
+
|
|
63
|
+
**netlab show**
|
|
64
|
+
: Display system settings in tabular, text, or YAML format. [More details](https://netlab.tools/netlab/show/)
|
|
65
|
+
|
|
66
|
+
**netlab defaults**
|
|
67
|
+
: Display and manage system defaults. [More details](https://netlab.tools/netlab/defaults/)
|
|
68
|
+
|
|
69
|
+
**netlab usage**
|
|
70
|
+
: Display and manage usage statistics. [More details](https://netlab.tools/netlab/usage/)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
__version__ = "26.04"
|
|
6
|
+
|
|
7
|
+
abort = False
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
import box
|
|
11
|
+
if box.__version__ < '7.2.0': # netlab needs Python Box version 7.2.0 or higher
|
|
12
|
+
print("FATAL ERROR: python-box version 7.2.0 or higher required, use 'pip3 install --upgrade python-box' to install")
|
|
13
|
+
abort = True
|
|
14
|
+
except: # box is not installed, something else is bound to fail ;)
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
if abort:
|
|
18
|
+
sys.exit(1)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Deploy module-specific configuration (specified in "item") to a device
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
# Find configuration template. Search in paths_custom.dirs (user defaults, package:extra) for
|
|
6
|
+
# template name specified in paths_custom.files (tons of variations on inventory_hostname, netlab_device_type,
|
|
7
|
+
# node_provider and ansible_network_os
|
|
8
|
+
#
|
|
9
|
+
---
|
|
10
|
+
- name: Find configuration template
|
|
11
|
+
set_fact:
|
|
12
|
+
config_module: "{{ custom_config }}"
|
|
13
|
+
config_template: "{{ lookup('first_found',params,errors='ignore') }}"
|
|
14
|
+
tags: [ always ]
|
|
15
|
+
vars:
|
|
16
|
+
node_provider: "{{ provider|default(netlab_provider) }}"
|
|
17
|
+
params:
|
|
18
|
+
paths: "{{ paths_custom.dirs }}"
|
|
19
|
+
files: "{{ [ custom_config ] if custom_config.endswith('.j2') else paths_custom.files }}"
|
|
20
|
+
|
|
21
|
+
- fail: msg="Cannot find configuration template {{ custom_config }} for device {{ inventory_hostname }}"
|
|
22
|
+
when: config_template == ''
|
|
23
|
+
tags: [ always ]
|
|
24
|
+
|
|
25
|
+
- name: Check is the configuration template is a file
|
|
26
|
+
stat:
|
|
27
|
+
path: "{{ config_template }}"
|
|
28
|
+
register: config_stat
|
|
29
|
+
delegate_to: localhost
|
|
30
|
+
|
|
31
|
+
- fail:
|
|
32
|
+
msg: Cannot find template for device {{ netlab_device_type }} in custom config directory {{ config_template }}
|
|
33
|
+
when:
|
|
34
|
+
config_stat.stat.isdir|default(False)
|
|
35
|
+
|
|
36
|
+
- name: "Process template {{ config_template }} for {{ inventory_hostname }}"
|
|
37
|
+
debug:
|
|
38
|
+
msg: |
|
|
39
|
+
{{ config_template }} configuration for {{ inventory_hostname }}
|
|
40
|
+
=========================================
|
|
41
|
+
{{ lookup('template',config_template) }}
|
|
42
|
+
verbosity: 1
|
|
43
|
+
tags: [ test, custom ]
|
|
44
|
+
|
|
45
|
+
# Find deployment task list. It could be a config-specific tasklist (somewhere
|
|
46
|
+
# in paths_custom directories with file name from paths_custom.tasks list) or a
|
|
47
|
+
# generic deployment tasklist from deployment directories and using generic
|
|
48
|
+
# deployment task names (a combination of ansible_network_os and
|
|
49
|
+
# netlab_provider). missing.yml in the deployment directory is the catch-all of
|
|
50
|
+
# last resort.
|
|
51
|
+
#
|
|
52
|
+
# Please note that the 'paths_custom.dirs' is changed by netlab initial/config.
|
|
53
|
+
# 'paths_custom.task_dirs' is a copy of the original 'paths_custom.dirs'
|
|
54
|
+
#
|
|
55
|
+
- block:
|
|
56
|
+
- debug: var=paths_custom.task_dirs
|
|
57
|
+
- debug: var=paths_custom.tasks
|
|
58
|
+
when: ansible_verbosity > 1
|
|
59
|
+
- name: Find custom configuration deployment script
|
|
60
|
+
set_fact:
|
|
61
|
+
deploy_task:
|
|
62
|
+
"{{ lookup('first_found',c_params,errors='ignore')
|
|
63
|
+
or lookup('first_found',d_params,errors='ignore') }}"
|
|
64
|
+
vars:
|
|
65
|
+
node_provider: "{{ provider|default(netlab_provider) }}"
|
|
66
|
+
c_params:
|
|
67
|
+
paths: "{{ paths_custom.task_dirs }}"
|
|
68
|
+
files: "{{ paths_custom.tasks }}"
|
|
69
|
+
d_params:
|
|
70
|
+
paths: "{{ paths_deploy.dirs }}"
|
|
71
|
+
files: "{{ paths_deploy.tasks_generic }}"
|
|
72
|
+
|
|
73
|
+
# Now that we have the name of the deployment task list, include it and let it run
|
|
74
|
+
#
|
|
75
|
+
- name: Run the configuration deployment script
|
|
76
|
+
include_tasks: "{{ deploy_task }}"
|
|
77
|
+
tags: [ custom ]
|
|
78
|
+
when: deploy_task is string and deploy_task != ''
|
|
79
|
+
vars:
|
|
80
|
+
node_provider: "{{ provider|default(netlab_provider) }}"
|
|
81
|
+
args:
|
|
82
|
+
apply:
|
|
83
|
+
vars:
|
|
84
|
+
netsim_action: "{{ custom_config|basename }}"
|
|
85
|
+
tags: [ always ]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
- name: Set netlab_vdom_enabled variable
|
|
3
|
+
ansible.builtin.set_fact:
|
|
4
|
+
netlab_vdom_is_enabled: "{{ netlab_vdom is defined and netlab_vdom != vdom }}"
|
|
5
|
+
|
|
6
|
+
- name: Enable multi-VDOM mode if a traffic VDOM is defined
|
|
7
|
+
fortinet.fortios.fortios_system_global:
|
|
8
|
+
vdom: "{{ vdom }}"
|
|
9
|
+
system_global:
|
|
10
|
+
management_vdom: "{{ vdom }}"
|
|
11
|
+
vdom_mode: multi-vdom
|
|
12
|
+
hostname: '{{ inventory_hostname.replace("_","-") }}'
|
|
13
|
+
register: vdom_mode_result
|
|
14
|
+
when: netlab_vdom_is_enabled
|
|
15
|
+
|
|
16
|
+
- name: Ensure FortiGate is ready after VDOM mode change
|
|
17
|
+
block:
|
|
18
|
+
- name: Wait 60 seconds after VDOM mode change
|
|
19
|
+
ansible.builtin.wait_for:
|
|
20
|
+
host: "{{ ansible_host }}"
|
|
21
|
+
port: 443
|
|
22
|
+
timeout: 180
|
|
23
|
+
sleep: 10 # time in seconds between checks
|
|
24
|
+
delay: 60 # Initial delay in seconds before first check
|
|
25
|
+
state: started
|
|
26
|
+
- name: Test FortiGate API readiness after VDOM mode change
|
|
27
|
+
fortinet.fortios.fortios_system_global:
|
|
28
|
+
vdom: "{{ vdom }}"
|
|
29
|
+
system_global:
|
|
30
|
+
hostname: '{{ inventory_hostname.replace("_","-") }}'
|
|
31
|
+
register: hostname_result
|
|
32
|
+
retries: 5
|
|
33
|
+
delay: 10 # Initial delay and waiting time between retries
|
|
34
|
+
until: hostname_result is not failed and hostname_result.meta.http_status == 200
|
|
35
|
+
when: >-
|
|
36
|
+
vdom_mode_result.meta is defined and
|
|
37
|
+
(vdom_mode_result.meta.http_status == 200 and vdom_mode_result.meta.revision_changed)
|
|
38
|
+
|
|
39
|
+
- name: Ensure `{{ vdom }}` VDOM is set as admin
|
|
40
|
+
fortinet.fortios.fortios_system_settings:
|
|
41
|
+
vdom: "{{ vdom }}"
|
|
42
|
+
system_settings:
|
|
43
|
+
vdom_type: admin
|
|
44
|
+
when: netlab_vdom_is_enabled
|
|
45
|
+
|
|
46
|
+
- name: Configure `{{ netlab_vdom }}` virtual domain
|
|
47
|
+
fortinet.fortios.fortios_system_vdom:
|
|
48
|
+
vdom: "{{ vdom }}"
|
|
49
|
+
state: present
|
|
50
|
+
system_vdom:
|
|
51
|
+
name: "{{ netlab_vdom }}"
|
|
52
|
+
when: netlab_vdom_is_enabled
|
|
53
|
+
|
|
54
|
+
- name: Deploy initial configuration from template
|
|
55
|
+
include_tasks: tasks/deploy-config/fortios.yml
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{% import "arubacx.macro.j2" as bgpcfg %}
|
|
2
|
+
!
|
|
3
|
+
!
|
|
4
|
+
router bgp {{ bgp.as }}
|
|
5
|
+
bgp log-neighbor-changes
|
|
6
|
+
timers bgp connect-retry 10
|
|
7
|
+
{% if bgp.router_id is defined %}
|
|
8
|
+
bgp router-id {{ bgp.router_id }}
|
|
9
|
+
{% endif %}
|
|
10
|
+
{% if bgp.rr|default(False) and bgp.rr_cluster_id|default(False) %}
|
|
11
|
+
bgp cluster-id {{ bgp.rr_cluster_id }}
|
|
12
|
+
{% endif %}
|
|
13
|
+
{#
|
|
14
|
+
Configure IPv4 and IPv6 BGP neighbors
|
|
15
|
+
#}
|
|
16
|
+
{% for n in bgp.neighbors %}
|
|
17
|
+
{% for af in ['ipv4','ipv6'] if n[af] is defined %}
|
|
18
|
+
{{ bgpcfg.neighbor_global(n,n[af]) }}
|
|
19
|
+
{% endfor %}
|
|
20
|
+
{% endfor %}
|
|
21
|
+
!
|
|
22
|
+
{# Configure BGP address families #}
|
|
23
|
+
{% for af in ['ipv4','ipv6'] if bgp[af] is defined %}
|
|
24
|
+
address-family {{ af }} unicast
|
|
25
|
+
!
|
|
26
|
+
{% if bgp.import is defined %}
|
|
27
|
+
{% for s_proto,s_data in bgp.import.items() %}
|
|
28
|
+
redistribute {{ s_proto }}{%
|
|
29
|
+
if s_proto == 'ospf' and af == 'ipv6' %}v3{% endif %}{%
|
|
30
|
+
if 'policy' in s_data %} route-map {{ s_data.policy }}-{{ af }}{% endif +%}
|
|
31
|
+
{% endfor %}
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% for pfx in bgp.advertise|default([]) if af in pfx %}
|
|
34
|
+
network {{ pfx[af] }}
|
|
35
|
+
{% endfor %}
|
|
36
|
+
!
|
|
37
|
+
{% for n in bgp.neighbors if n[af] is defined and n.activate[af] is defined and n.activate[af] %}
|
|
38
|
+
{{ bgpcfg.neighbor_af(n,n[af],bgp) }}
|
|
39
|
+
{% endfor %}
|
|
40
|
+
{% endfor %}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{% macro community(list) -%}
|
|
2
|
+
{{ "both" if list|length >= 2 else list[0] }}
|
|
3
|
+
{%- endmacro %}
|
|
4
|
+
!
|
|
5
|
+
{#
|
|
6
|
+
Global BGP neighbor definition
|
|
7
|
+
#}
|
|
8
|
+
{% macro neighbor_global(n,ip) %}
|
|
9
|
+
neighbor {{ ip }} remote-as {{ n.as }}
|
|
10
|
+
{% if n.local_as is defined %}
|
|
11
|
+
neighbor {{ ip }} local-as {{ n.local_as }}{%
|
|
12
|
+
if n.replace_global_as|default(True) and n.type != 'localas_ibgp' %} no-prepend replace-as{% endif +%}
|
|
13
|
+
{% endif %}
|
|
14
|
+
neighbor {{ ip }} description {{ n.name }}
|
|
15
|
+
{% if n._source_intf is defined %}
|
|
16
|
+
neighbor {{ ip }} update-source {{ n._source_intf.ifname }}
|
|
17
|
+
{% endif %}
|
|
18
|
+
{%- endmacro %}
|
|
19
|
+
{#
|
|
20
|
+
Address family BGP neighbor definition
|
|
21
|
+
#}
|
|
22
|
+
{% macro neighbor_af(n,ip,bgp) %}
|
|
23
|
+
neighbor {{ ip }} activate
|
|
24
|
+
neighbor {{ ip }} advertisement-interval 1
|
|
25
|
+
{% if 'ibgp' in n.type %}
|
|
26
|
+
{% if bgp.community.ibgp|default([]) %}
|
|
27
|
+
neighbor {{ ip }} send-community {{ community(bgp.community.ibgp) }}
|
|
28
|
+
{% endif %}
|
|
29
|
+
{% if bgp.next_hop_self is defined and bgp.next_hop_self %}
|
|
30
|
+
neighbor {{ ip }} next-hop-self
|
|
31
|
+
{% endif %}
|
|
32
|
+
{% if bgp.rr|default('') and (not n.rr|default('') or n.type == 'localas_ibgp') %}
|
|
33
|
+
neighbor {{ ip }} route-reflector-client
|
|
34
|
+
{% endif %}
|
|
35
|
+
{% else %}{# EBGP IPv4 neighbor #}
|
|
36
|
+
{% if bgp.community.ebgp|default([]) %}
|
|
37
|
+
neighbor {{ ip }} send-community {{ community(bgp.community.ebgp) }}
|
|
38
|
+
{% endif %}
|
|
39
|
+
{% endif %}
|
|
40
|
+
{%- endmacro -%}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{% import "templates/routing/_redistribute.cumulus_nvue.j2" as redistribute with context %}
|
|
2
|
+
{% macro advertise_communities(comms) %}
|
|
3
|
+
community-advertise:
|
|
4
|
+
{% for c in ['standard', 'extended', 'large'] %}
|
|
5
|
+
{{ c.replace("standard","regular") }}: {{ 'on' if c in comms else 'off' }}
|
|
6
|
+
{% endfor %}
|
|
7
|
+
{% endmacro %}
|
|
8
|
+
{% macro bgp_in_vrf(vrf_name,vrf) %}
|
|
9
|
+
{% set vrf_bgp = vrf.bgp %}
|
|
10
|
+
- set:
|
|
11
|
+
vrf:
|
|
12
|
+
{{ vrf_name }}:
|
|
13
|
+
router:
|
|
14
|
+
bgp:
|
|
15
|
+
enable: on
|
|
16
|
+
autonomous-system: {{ bgp.as }}
|
|
17
|
+
router-id: {{ vrf_bgp.router_id|default(bgp.router_id) }}
|
|
18
|
+
{% if vrf.rd is defined %}
|
|
19
|
+
rd: {{ vrf.rd }}
|
|
20
|
+
{% endif %}
|
|
21
|
+
{% if vrf_bgp.rr|default(False) %}
|
|
22
|
+
route-reflection:
|
|
23
|
+
enable: on
|
|
24
|
+
{% if vrf_bgp.rr_cluster_id is defined %}
|
|
25
|
+
cluster-id: {{ vrf_bgp.rr_cluster_id }}
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% for af in ['ipv4','ipv6'] if vrf.af[af] is defined %}
|
|
29
|
+
{% if loop.first %}
|
|
30
|
+
address-family:
|
|
31
|
+
{% endif %}
|
|
32
|
+
{{ af }}-unicast:
|
|
33
|
+
enable: on
|
|
34
|
+
{% if vrf_bgp.import is defined %}
|
|
35
|
+
{{ redistribute.config(vrf_bgp,af=af)|indent(16,first=True) }}
|
|
36
|
+
{% endif %}
|
|
37
|
+
{% set _loopback = [ vrf.loopback[af]|ansible.utils.ipaddr(0) ] if vrf.loopback[af] is defined and bgp.advertise_loopback|default(True) else [] %}
|
|
38
|
+
{% for pfx in vrf_bgp.advertise|default([]) if af in pfx %}
|
|
39
|
+
{% if loop.first %}
|
|
40
|
+
network:
|
|
41
|
+
{% endif %}
|
|
42
|
+
{{ pfx[af] }}: {}
|
|
43
|
+
{% endfor %}
|
|
44
|
+
{% endfor %}
|
|
45
|
+
{% for n in vrf_bgp.neighbors|default([]) %}
|
|
46
|
+
{% if loop.first %}
|
|
47
|
+
neighbor:
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% if n.local_if is defined %}
|
|
50
|
+
{{ n.local_if }}:
|
|
51
|
+
type: unnumbered
|
|
52
|
+
remote-as: {{ n.as }}
|
|
53
|
+
{% if n.ipv4_rfc8950|default(False) %}
|
|
54
|
+
capabilities:
|
|
55
|
+
extended-nexthop: on
|
|
56
|
+
{% endif %}
|
|
57
|
+
address-family:
|
|
58
|
+
ipv4-unicast:
|
|
59
|
+
enable: {{ 'on' if n.ipv4_rfc8950|default(False) else 'off' }}
|
|
60
|
+
community-advertise:
|
|
61
|
+
extended: on
|
|
62
|
+
ipv6-unicast:
|
|
63
|
+
enable: {{ 'on' if n.ipv6|default(False) and ('activate' not in n or n.activate.ipv6|default(False)) else 'off' }}
|
|
64
|
+
community-advertise:
|
|
65
|
+
extended: on
|
|
66
|
+
{% endif %}
|
|
67
|
+
{% for af in ('ipv4','ipv6') if af in n and n[af] is string %}
|
|
68
|
+
{{ n[af] }}:
|
|
69
|
+
description: "{{ n.name }}"
|
|
70
|
+
{% if af=='ipv6' and n.ipv4_rfc8950|default(False) %}
|
|
71
|
+
capabilities:
|
|
72
|
+
extended-nexthop: on
|
|
73
|
+
{% endif %}
|
|
74
|
+
{% if n._source_intf is defined %}
|
|
75
|
+
update-source: {{ n._source_intf.ifname }}
|
|
76
|
+
{% endif %}
|
|
77
|
+
remote-as: {{ 'internal' if n.as==bgp.as else n.as }}
|
|
78
|
+
{% if n.local_as is defined %}
|
|
79
|
+
local-as:
|
|
80
|
+
asn: {{ n.local_as }}
|
|
81
|
+
enable: on
|
|
82
|
+
{% if n.replace_global_as|default(True) %}
|
|
83
|
+
replace: on
|
|
84
|
+
prepend: off
|
|
85
|
+
{% endif %}
|
|
86
|
+
{% endif %}
|
|
87
|
+
address-family:
|
|
88
|
+
{# NVUE cannot turn off default IPv4 activation, so we have to implement a fix for IPv6 #}
|
|
89
|
+
{% if af == 'ipv6' %}
|
|
90
|
+
ipv4-unicast:
|
|
91
|
+
enable: {{ 'on' if n.ipv4_rfc8950|default(False) else 'off' }}
|
|
92
|
+
{% endif %}
|
|
93
|
+
{{ af }}-unicast:
|
|
94
|
+
enable: {{ 'on' if 'activate' not in n or n.activate[af]|default(False) else 'off' }}
|
|
95
|
+
{% if 'ibgp' in n.type %}
|
|
96
|
+
{% if vrf_bgp.next_hop_self|default(False) %}
|
|
97
|
+
nexthop-setting: self
|
|
98
|
+
{% endif %}
|
|
99
|
+
{% if vrf_bgp.rr|default('') and not n.rr|default('') %}
|
|
100
|
+
route-reflector-client: on
|
|
101
|
+
{% endif %}
|
|
102
|
+
{% endif %}
|
|
103
|
+
{% if n.type in vrf_bgp.community|default({}) %}
|
|
104
|
+
{{ advertise_communities( vrf_bgp.community[n.type] ) }}
|
|
105
|
+
{% endif %}
|
|
106
|
+
{% endfor %}
|
|
107
|
+
{% endfor %}
|
|
108
|
+
{% endmacro %}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{% import "dellos10.macro.j2" as bgpcfg %}
|
|
2
|
+
{% import "templates/routing/_redistribute.dellos10.j2" as redistribute %}
|
|
3
|
+
{% set ospf_pid = ospf.process|default(1) %}
|
|
4
|
+
!
|
|
5
|
+
router bgp {{ bgp.as }}
|
|
6
|
+
log-neighbor-changes
|
|
7
|
+
|
|
8
|
+
! define a generic unnumbered template to be used for eBGP unnumbered...
|
|
9
|
+
! additionally, need to define link-local-only-nexthop as per Dell suggested "Cumulus workaround"
|
|
10
|
+
! WTF Dell...
|
|
11
|
+
template unnumbered_ebgp
|
|
12
|
+
link-local-only-nexthop
|
|
13
|
+
exit
|
|
14
|
+
|
|
15
|
+
{% if bgp.router_id is defined %}
|
|
16
|
+
router-id {{ bgp.router_id }}
|
|
17
|
+
{% endif %}
|
|
18
|
+
{% if bgp.confederation is defined %}
|
|
19
|
+
confederation identifier {{ bgp.confederation.as }}
|
|
20
|
+
confederation peers {{ bgp.confederation.peers|join(' ') }}
|
|
21
|
+
{% endif %}
|
|
22
|
+
{% if bgp.rr|default(False) and bgp.rr_cluster_id|default(False) %}
|
|
23
|
+
cluster-id {{ bgp.rr_cluster_id }}
|
|
24
|
+
{% endif %}
|
|
25
|
+
{% if bgp.rr|default('') %}
|
|
26
|
+
client-to-client reflection
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% for n in bgp.neighbors %}
|
|
29
|
+
{% for af in ['ipv4','ipv6'] if n[af] is defined %}
|
|
30
|
+
{{ bgpcfg.neighbor(n,n[af],bgp,af) }}
|
|
31
|
+
{% endfor %}
|
|
32
|
+
{% endfor %}
|
|
33
|
+
!
|
|
34
|
+
{% for af in ['ipv4','ipv6'] %}
|
|
35
|
+
{% if bgp[af] is defined %}
|
|
36
|
+
!
|
|
37
|
+
address-family {{ af }} unicast
|
|
38
|
+
!
|
|
39
|
+
{{ redistribute.config(bgp,af=af,ospf_pid=ospf_pid) }}
|
|
40
|
+
{% for pfx in bgp.advertise|default([]) if af in pfx %}
|
|
41
|
+
network {{ pfx[af] }}
|
|
42
|
+
{% endfor %}
|
|
43
|
+
!
|
|
44
|
+
{% endif %}
|
|
45
|
+
{% endfor %}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{% import "eos.macro.j2" as bgpcfg %}
|
|
2
|
+
{% import "templates/routing/_redistribute.eos.j2" as redistribute with context %}
|
|
3
|
+
!
|
|
4
|
+
{% set opts = namespace(nhs_ipv4=false,nhs_ipv6=false,intf=false) %}
|
|
5
|
+
{% for n in bgp.neighbors if n.type == 'ibgp' and bgp.next_hop_self|default(False) %}
|
|
6
|
+
{% if 'ipv4' in n %}
|
|
7
|
+
{% set opts.nhs_ipv4 = true %}
|
|
8
|
+
{% endif %}
|
|
9
|
+
{% if 'ipv6' in n %}
|
|
10
|
+
{% set opts.nhs_ipv6 = true %}
|
|
11
|
+
{% endif %}
|
|
12
|
+
{% endfor %}
|
|
13
|
+
{% if opts.nhs_ipv4 %}
|
|
14
|
+
route-map next-hop-self-ipv4 permit 10
|
|
15
|
+
match route-type external
|
|
16
|
+
set ip next-hop peer-address
|
|
17
|
+
!
|
|
18
|
+
route-map next-hop-self-ipv4 permit 20
|
|
19
|
+
!
|
|
20
|
+
{% endif %}
|
|
21
|
+
{% if opts.nhs_ipv6 %}
|
|
22
|
+
route-map next-hop-self-ipv6 permit 10
|
|
23
|
+
match route-type external
|
|
24
|
+
set ipv6 next-hop peer-address
|
|
25
|
+
!
|
|
26
|
+
route-map next-hop-self-ipv6 permit 20
|
|
27
|
+
!
|
|
28
|
+
{% endif %}
|
|
29
|
+
{% for n in bgp.neighbors if 'local_if' in n %}
|
|
30
|
+
{% set opts.intf = true %}
|
|
31
|
+
{% if loop.first %}
|
|
32
|
+
ipv6 unicast-routing
|
|
33
|
+
ip routing ipv6 interfaces
|
|
34
|
+
!
|
|
35
|
+
{% endif %}
|
|
36
|
+
interface {{ n.local_if }}
|
|
37
|
+
ipv6 enable
|
|
38
|
+
!
|
|
39
|
+
{% endfor %}
|
|
40
|
+
!
|
|
41
|
+
router bgp {{ bgp.as }}
|
|
42
|
+
bgp advertise-inactive
|
|
43
|
+
bgp log-neighbor-changes
|
|
44
|
+
no bgp default ipv4-unicast
|
|
45
|
+
no bgp default ipv6-unicast
|
|
46
|
+
{% if bgp.confederation is defined %}
|
|
47
|
+
bgp confederation identifier {{ bgp.confederation.as }}
|
|
48
|
+
bgp confederation peers {{ bgp.confederation.peers|join(' ') }}
|
|
49
|
+
{% endif %}
|
|
50
|
+
{% if bgp.router_id is defined %}
|
|
51
|
+
router-id {{ bgp.router_id }}
|
|
52
|
+
{% endif %}
|
|
53
|
+
{% if bgp.rr|default(False) and bgp.rr_cluster_id|default(False) %}
|
|
54
|
+
bgp cluster-id {{ bgp.rr_cluster_id }}
|
|
55
|
+
{% endif %}
|
|
56
|
+
{% for n in bgp.neighbors %}
|
|
57
|
+
{% for af in ['ipv4','ipv6'] if n[af] is defined %}
|
|
58
|
+
{{ bgpcfg.neighbor(n,af,bgp) }}
|
|
59
|
+
{% endfor %}
|
|
60
|
+
{% endfor %}
|
|
61
|
+
!
|
|
62
|
+
{# Activate address families #}
|
|
63
|
+
{% for af in ['ipv4','ipv6'] %}
|
|
64
|
+
{% if bgp[af] is defined %}
|
|
65
|
+
!
|
|
66
|
+
address-family {{ af }}
|
|
67
|
+
{{ redistribute.config(bgp,af=af) }}
|
|
68
|
+
!
|
|
69
|
+
{% for pfx in bgp.advertise|default([]) if af in pfx %}
|
|
70
|
+
network {{ pfx[af] }}
|
|
71
|
+
{% endfor %}
|
|
72
|
+
!
|
|
73
|
+
{% for n in bgp.neighbors if n.activate[af]|default(false) %}
|
|
74
|
+
{% set peer = 'ebgp_intf_' + n.local_if if n.local_if is defined else n[af] %}
|
|
75
|
+
neighbor {{ peer }} activate
|
|
76
|
+
{% set nhs = n.next_hop_self|default(False) %}
|
|
77
|
+
{% if nhs == 'ebgp' %}
|
|
78
|
+
neighbor {{ peer }} route-map next-hop-self-{{ af }} out
|
|
79
|
+
{% else %}
|
|
80
|
+
neighbor {{ peer }} next-hop-self
|
|
81
|
+
{% endif %}
|
|
82
|
+
{% if n.local_if is defined and af == 'ipv4' %}
|
|
83
|
+
neighbor {{ peer }} next-hop address-family ipv6 originate
|
|
84
|
+
{% endif %}
|
|
85
|
+
{% endfor %}
|
|
86
|
+
{% endif %}
|
|
87
|
+
{% endfor %}
|