From 22a988903e7c27cbf6363c323289d3f65aede4ef Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Wed, 17 Jul 2024 16:01:17 +0530 Subject: [PATCH 01/24] Feat(eos_designs, eos_cli_config_gen): Implement ipv6 virtual source nat vrfs --- .../documentation/devices/dc1-leaf1a.md | 8 +- .../documentation/devices/dc1-leaf1b.md | 8 +- .../documentation/devices/dc1-leaf2a.md | 8 +- .../documentation/devices/dc1-leaf2b.md | 8 +- .../documentation/devices/dc2-leaf1a.md | 8 +- .../documentation/devices/dc2-leaf1b.md | 8 +- .../documentation/devices/dc2-leaf2a.md | 8 +- .../documentation/devices/dc2-leaf2b.md | 8 +- .../intended/configs/dc1-leaf1a.cfg | 2 - .../intended/configs/dc1-leaf1b.cfg | 2 - .../intended/configs/dc1-leaf2a.cfg | 2 - .../intended/configs/dc1-leaf2b.cfg | 2 - .../intended/configs/dc2-leaf1a.cfg | 2 - .../intended/configs/dc2-leaf1b.cfg | 2 - .../intended/configs/dc2-leaf2a.cfg | 2 - .../intended/configs/dc2-leaf2b.cfg | 2 - .../structured_configs/dc1-leaf1a.yml | 2 - .../structured_configs/dc1-leaf1b.yml | 2 - .../structured_configs/dc1-leaf2a.yml | 2 - .../structured_configs/dc1-leaf2b.yml | 2 - .../structured_configs/dc2-leaf1a.yml | 2 - .../structured_configs/dc2-leaf1b.yml | 2 - .../structured_configs/dc2-leaf2a.yml | 2 - .../structured_configs/dc2-leaf2b.yml | 2 - .../documentation/devices/dc1-leaf1a.md | 8 +- .../documentation/devices/dc1-leaf1b.md | 8 +- .../documentation/devices/dc1-leaf2a.md | 8 +- .../documentation/devices/dc1-leaf2b.md | 8 +- .../intended/configs/dc1-leaf1a.cfg | 2 - .../intended/configs/dc1-leaf1b.cfg | 2 - .../intended/configs/dc1-leaf2a.cfg | 2 - .../intended/configs/dc1-leaf2b.cfg | 2 - .../structured_configs/dc1-leaf1a.yml | 2 - .../structured_configs/dc1-leaf1b.yml | 2 - .../structured_configs/dc1-leaf2a.yml | 2 - .../structured_configs/dc1-leaf2b.yml | 2 - .../devices/virtual-source-nat.md | 8 +- .../intended/configs/virtual-source-nat.cfg | 1 + .../host_vars/virtual-source-nat.yml | 2 + .../documentation/devices/host1.md | 6 +- .../documentation/devices/DC1-LEAF2A.md | 5 +- .../documentation/devices/DC1-LEAF2B.md | 5 +- .../documentation/devices/DC1-SVC3A.md | 5 +- .../documentation/devices/DC1-SVC3B.md | 5 +- .../intended/configs/DC1-LEAF2A.cfg | 1 - .../intended/configs/DC1-LEAF2B.cfg | 1 - .../intended/configs/DC1-SVC3A.cfg | 1 - .../intended/configs/DC1-SVC3B.cfg | 1 - .../structured_configs/DC1-LEAF2A.yml | 1 - .../structured_configs/DC1-LEAF2B.yml | 1 - .../intended/structured_configs/DC1-SVC3A.yml | 1 - .../intended/structured_configs/DC1-SVC3B.yml | 1 - .../cvp-empty-filter/cv_server_configlets.yml | 24 +- .../cvp/cv_server_configlets.yml | 24 +- .../documentation/devices/DC1-POD1-LEAF2B.md | 14 +- .../documentation/devices/DC1-POD2-LEAF1A.md | 8 +- .../documentation/devices/DC1.POD1.LEAF2A.md | 14 +- .../documentation/devices/DC2-POD1-LEAF1A.md | 8 +- .../intended/configs/DC1-POD1-LEAF2B.cfg | 4 +- .../intended/configs/DC1-POD2-LEAF1A.cfg | 2 - .../intended/configs/DC1.POD1.LEAF2A.cfg | 4 +- .../intended/configs/DC2-POD1-LEAF1A.cfg | 2 - .../structured_configs/DC1-POD1-LEAF2B.yml | 4 +- .../structured_configs/DC1-POD2-LEAF1A.yml | 2 - .../structured_configs/DC1.POD1.LEAF2A.yml | 4 +- .../structured_configs/DC2-POD1-LEAF1A.yml | 2 - .../inventory/group_vars/TENANTS_NETWORKS.yml | 3 + .../intended/configs/DC1-LEAF1A.cfg | 1 - .../intended/configs/DC1-LEAF2A.cfg | 2 - .../intended/configs/DC1-LEAF2B.cfg | 2 - .../intended/configs/DC1-SVC3A.cfg | 1 - .../intended/configs/DC1-SVC3B.cfg | 1 - .../configs/DC1_UNDEPLOYED_LEAF1A.cfg | 1 - .../configs/DC1_UNDEPLOYED_LEAF1B.cfg | 1 - .../configs/EVPN-MULTICAST-DISABLED.cfg | 9 - .../configs/EVPN-MULTICAST-L3LEAF1A.cfg | 9 - .../configs/EVPN-MULTICAST-L3LEAF1B.cfg | 9 - .../configs/EVPN-MULTICAST-L3LEAF2A.cfg | 9 - .../configs/EVPN-MULTICAST-L3LEAF3A.cfg | 9 - .../configs/EVPN-MULTICAST-L3LEAF3B.cfg | 9 - .../intended/configs/MH-LEAF1A.cfg | 2 + .../intended/configs/MH-LEAF1B.cfg | 2 + .../intended/configs/MH-LEAF2A.cfg | 2 + .../configs/evpn_services_l2_only_false.cfg | 1 - .../structured_configs/DC1-LEAF1A.yml | 1 - .../structured_configs/DC1-LEAF2A.yml | 2 - .../structured_configs/DC1-LEAF2B.yml | 2 - .../intended/structured_configs/DC1-SVC3A.yml | 1 - .../intended/structured_configs/DC1-SVC3B.yml | 1 - .../DC1_UNDEPLOYED_LEAF1A.yml | 1 - .../DC1_UNDEPLOYED_LEAF1B.yml | 1 - .../EVPN-MULTICAST-DISABLED.yml | 9 - .../EVPN-MULTICAST-L3LEAF1A.yml | 9 - .../EVPN-MULTICAST-L3LEAF1B.yml | 9 - .../EVPN-MULTICAST-L3LEAF2A.yml | 9 - .../EVPN-MULTICAST-L3LEAF3A.yml | 9 - .../EVPN-MULTICAST-L3LEAF3B.yml | 9 - .../intended/structured_configs/MH-LEAF1A.yml | 2 + .../intended/structured_configs/MH-LEAF1B.yml | 2 + .../intended/structured_configs/MH-LEAF2A.yml | 2 + .../evpn_services_l2_only_false.yml | 1 - .../group_vars/MH_TENANT_NETWORKS.yml | 1 + .../structured_configs/dc1-leaf1a.yml | 2 - .../structured_configs/dc1-leaf1b.yml | 2 - .../structured_configs/dc1-leaf2a.yml | 2 - .../structured_configs/dc1-leaf2b.yml | 2 - .../structured_configs/dc2-leaf1a.yml | 2 - .../structured_configs/dc2-leaf1b.yml | 2 - .../structured_configs/dc2-leaf2a.yml | 2 - .../structured_configs/dc2-leaf2b.yml | 2 - .../dc2-leaf3a.arista.com.yml | 2 - .../dc2-leaf3b.arista.com.yml | 2 - .../documentation/devices/DC1-LEAF2A.md | 5 +- .../documentation/devices/DC1-LEAF2B.md | 5 +- .../documentation/devices/DC1-SVC3A.md | 5 +- .../documentation/devices/DC1-SVC3B.md | 5 +- .../intended/configs/DC1-LEAF2A.cfg | 1 - .../intended/configs/DC1-LEAF2B.cfg | 1 - .../intended/configs/DC1-SVC3A.cfg | 1 - .../intended/configs/DC1-SVC3B.cfg | 1 - .../structured_configs/DC1-LEAF2A.yml | 1 - .../structured_configs/DC1-LEAF2B.yml | 1 - .../intended/structured_configs/DC1-SVC3A.yml | 1 - .../intended/structured_configs/DC1-SVC3B.yml | 1 - .../documentation/devices/DC1-LEAF2A.md | 5 +- .../documentation/devices/DC1-LEAF2B.md | 5 +- .../documentation/devices/DC1-LEAF3A.md | 5 +- .../documentation/devices/DC1-LEAF3B.md | 5 +- .../documentation/devices/DC1-LEAF4A.md | 5 +- .../documentation/devices/DC1-LEAF4B.md | 5 +- .../documentation/devices/DC1-SVC3A.md | 5 +- .../documentation/devices/DC1-SVC3B.md | 5 +- .../intended/configs/DC1-LEAF2A.cfg | 1 - .../intended/configs/DC1-LEAF2B.cfg | 1 - .../intended/configs/DC1-LEAF3A.cfg | 1 - .../intended/configs/DC1-LEAF3B.cfg | 1 - .../intended/configs/DC1-LEAF4A.cfg | 1 - .../intended/configs/DC1-LEAF4B.cfg | 1 - .../intended/configs/DC1-SVC3A.cfg | 1 - .../intended/configs/DC1-SVC3B.cfg | 1 - .../structured_configs/DC1-LEAF2A.yml | 1 - .../structured_configs/DC1-LEAF2B.yml | 1 - .../structured_configs/DC1-LEAF3A.yml | 1 - .../structured_configs/DC1-LEAF3B.yml | 1 - .../structured_configs/DC1-LEAF4A.yml | 1 - .../structured_configs/DC1-LEAF4B.yml | 1 - .../intended/structured_configs/DC1-SVC3A.yml | 1 - .../intended/structured_configs/DC1-SVC3B.yml | 1 - .../docs/tables/virtual-source-nat-vrfs.md | 4 + .../tables/network-services-vrfs-settings.md | 10 + .../documentation/virtual-source-nat-vrfs.j2 | 4 +- .../eos/virtual-source-nat-vrfs.j2 | 3 + .../schema/eos_cli_config_gen.jsonschema.json | 31965 ++++++++ .../virtual_source_nat_vrfs.schema.yml | 3 + .../_eos_designs/ip_addressing/__init__.py | 10 + .../schema/eos_designs.jsonschema.json | 62127 ++++++++++++++++ .../schema/eos_designs.schema.yml | 13 + .../defs_network_services.schema.yml | 9 + .../network_services/loopback_interfaces.py | 37 +- .../virtual_source_nat_vrfs.py | 9 +- 160 files changed, 94317 insertions(+), 430 deletions(-) create mode 100644 python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json create mode 100644 python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md index 9b8cf414295..a64fa173e3b 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -886,15 +886,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.3 | -| VRF11 | 10.255.11.3 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.3 -ip address virtual source-nat vrf VRF11 address 10.255.11.3 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md index 4ee20b56541..e1a91c80f77 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -886,15 +886,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.4 | -| VRF11 | 10.255.11.4 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.4 -ip address virtual source-nat vrf VRF11 address 10.255.11.4 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md index 44aefdc35aa..1f854520f30 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -944,15 +944,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.5 | -| VRF11 | 10.255.11.5 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.5 -ip address virtual source-nat vrf VRF11 address 10.255.11.5 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md index 24683275365..892600db43f 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -944,15 +944,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.6 | -| VRF11 | 10.255.11.6 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.6 -ip address virtual source-nat vrf VRF11 address 10.255.11.6 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md index c42489b7edf..233aaa61fcc 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md @@ -886,15 +886,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.13 | -| VRF11 | 10.255.11.13 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.13 -ip address virtual source-nat vrf VRF11 address 10.255.11.13 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md index 0b0532d15ef..f2c1e37c9ac 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md @@ -886,15 +886,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.14 | -| VRF11 | 10.255.11.14 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.14 -ip address virtual source-nat vrf VRF11 address 10.255.11.14 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md index a14babe8c9e..18e8b57f400 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md @@ -944,15 +944,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.15 | -| VRF11 | 10.255.11.15 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.15 -ip address virtual source-nat vrf VRF11 address 10.255.11.15 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md index 7cdcec105b6..4f7dc04de81 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md @@ -944,15 +944,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.16 | -| VRF11 | 10.255.11.16 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.16 -ip address virtual source-nat vrf VRF11 address 10.255.11.16 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg index d15ba72bd39..c64cd9b7b97 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg @@ -213,8 +213,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.3 -ip address virtual source-nat vrf VRF11 address 10.255.11.3 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg index de1c25496ec..26a4cad0994 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg @@ -213,8 +213,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.4 -ip address virtual source-nat vrf VRF11 address 10.255.11.4 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg index 86f3154d3e6..20129ab29f2 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg @@ -220,8 +220,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.5 -ip address virtual source-nat vrf VRF11 address 10.255.11.5 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg index 66b47d5f928..d2c83d8a22a 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg @@ -220,8 +220,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.6 -ip address virtual source-nat vrf VRF11 address 10.255.11.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg index 8a58f1a2737..2b1944c7ebb 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg @@ -213,8 +213,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.13 -ip address virtual source-nat vrf VRF11 address 10.255.11.13 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg index 12a16fef261..d8086cc6c6f 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg @@ -213,8 +213,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.14 -ip address virtual source-nat vrf VRF11 address 10.255.11.14 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg index 2394515af77..b788819d32e 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg @@ -220,8 +220,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.15 -ip address virtual source-nat vrf VRF11 address 10.255.11.15 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg index 5ed2092b0ed..4d19d929d8f 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg @@ -220,8 +220,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.16 -ip address virtual source-nat vrf VRF11 address 10.255.11.16 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml index 9b21b45e0c8..65d913ce95a 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml @@ -460,8 +460,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.3 - name: VRF11 - ip_address: 10.255.11.3 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml index bf891849c24..758b1412564 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml @@ -460,8 +460,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.4 - name: VRF11 - ip_address: 10.255.11.4 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml index 30c8948af28..bde5e023af2 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml @@ -531,8 +531,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.5 - name: VRF11 - ip_address: 10.255.11.5 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml index b147984935d..257cdf8f514 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml @@ -531,8 +531,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.6 - name: VRF11 - ip_address: 10.255.11.6 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml index 081a05bd994..89418be5715 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml @@ -460,8 +460,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.13 - name: VRF11 - ip_address: 10.255.11.13 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml index bd62070d4cc..64a49d6eb21 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml @@ -460,8 +460,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.14 - name: VRF11 - ip_address: 10.255.11.14 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml index 3ac6d9941f8..06ffeac80d3 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml @@ -531,8 +531,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.15 - name: VRF11 - ip_address: 10.255.11.15 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml index 3bb78ceb49d..30919c258d8 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml @@ -531,8 +531,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.16 - name: VRF11 - ip_address: 10.255.11.16 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md index f236032240d..cfec28a4381 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -947,15 +947,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.3 | -| VRF11 | 10.255.11.3 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.3 -ip address virtual source-nat vrf VRF11 address 10.255.11.3 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md index 5cf60726297..0520b6e958d 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -947,15 +947,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.4 | -| VRF11 | 10.255.11.4 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.4 -ip address virtual source-nat vrf VRF11 address 10.255.11.4 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md index 85bf5f184eb..bc0d97fb948 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -947,15 +947,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.5 | -| VRF11 | 10.255.11.5 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.5 -ip address virtual source-nat vrf VRF11 address 10.255.11.5 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md index e2065445561..6f2fd1ce8a7 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -947,15 +947,13 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| VRF10 | 10.255.10.6 | -| VRF11 | 10.255.11.6 | +| VRF10 | - | - | +| VRF11 | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf VRF10 address 10.255.10.6 -ip address virtual source-nat vrf VRF11 address 10.255.11.6 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg index fc5f29fead2..2d131cc2dcf 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg @@ -221,8 +221,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.3 -ip address virtual source-nat vrf VRF11 address 10.255.11.3 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg index 004f516eb7e..1dcbc48c00a 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg @@ -221,8 +221,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.4 -ip address virtual source-nat vrf VRF11 address 10.255.11.4 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg index e6165396c57..b6c97ad25dc 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg @@ -221,8 +221,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.5 -ip address virtual source-nat vrf VRF11 address 10.255.11.5 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg index 607d2f5d12e..d465bd68d15 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg @@ -221,8 +221,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! -ip address virtual source-nat vrf VRF10 address 10.255.10.6 -ip address virtual source-nat vrf VRF11 address 10.255.11.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml index 33b2c59c281..4d66df780b5 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml @@ -481,8 +481,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.3 - name: VRF11 - ip_address: 10.255.11.3 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml index 9ca6cf68e6b..b043c097b75 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml @@ -481,8 +481,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.4 - name: VRF11 - ip_address: 10.255.11.4 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml index 8a9af753ba5..7586397005e 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml @@ -481,8 +481,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.5 - name: VRF11 - ip_address: 10.255.11.5 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml index a8724ddc94e..1318cda3943 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml @@ -481,8 +481,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.6 - name: VRF11 - ip_address: 10.255.11.6 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md index 33b56cbf1a3..b0d31aa8432 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md @@ -40,10 +40,11 @@ interface Management1 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| TEST_01 | 1.1.1.1 | -| TEST_02 | 1.1.1.2 | +| TEST_01 | 1.1.1.1 | - | +| TEST_02 | 1.1.1.2 | - | +| TEST_03 | - | 2001:db8:85a3::8a2e:370:7334 | ### Virtual Source NAT Configuration @@ -51,4 +52,5 @@ interface Management1 ! ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 +ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg index 58a12618b7f..8dcafc09dff 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg @@ -14,5 +14,6 @@ interface Management1 ! ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 +ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ! end diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml index 9c0fb6851b9..e85d35ff5ea 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml @@ -4,3 +4,5 @@ virtual_source_nat_vrfs: ip_address: 1.1.1.1 - name: TEST_02 ip_address: 1.1.1.2 + - name: TEST_03 + ipv6_address: 2001:db8:85a3::8a2e:370:7334 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md index 1d2e38d8cdd..fdeadb29ff8 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md @@ -1544,10 +1544,10 @@ vrf instance TENANT_A_PROJECT02 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| TEST_01 | 1.1.1.1 | -| TEST_02 | 1.1.1.2 | +| TEST_01 | 1.1.1.1 | - | +| TEST_02 | 1.1.1.2 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md index 1183374fb69..afc3b174032 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md @@ -1226,13 +1226,12 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.6 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md index 8f350c7631e..9eca84f65a3 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md @@ -1226,13 +1226,12 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.7 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md index 6860f40a801..6e220d9d805 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md @@ -1405,13 +1405,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.8 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md index ff9f3a8aee1..552eeab3474 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md @@ -1379,13 +1379,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.9 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg index 387ddb4bc68..1a6dcb5a209 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg @@ -361,7 +361,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg index 0b3111ee2e2..cbdb3d381f5 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg @@ -361,7 +361,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg index ed2eae463a2..0830c137139 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg @@ -441,7 +441,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg index 8683024f7e5..243aa26e43b 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg @@ -425,7 +425,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml index d48b8951777..f680c8ceb68 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml @@ -788,6 +788,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.6 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml index fede5822f45..830e35cd7ab 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml @@ -788,6 +788,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.7 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml index b8ed17a7a40..bc7f495c1eb 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml @@ -975,6 +975,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.8 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml index ca66b1b3694..0b7e9f9844f 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml @@ -954,6 +954,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.9 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml index 05137d98676..a2d87d7c177 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml @@ -494,8 +494,7 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.6\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -667,8 +666,7 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.7\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -1142,14 +1140,13 @@ cvp_configlets: \ vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WAN_Zone vni 14\n \ vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n \ vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n - \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\nip - address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8\n!\nip routing\nno - ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip - routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf - Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip - routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip prefix-list - PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n seq 20 - permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n + \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\n!\nip + routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing + vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip + routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf + Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip + prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n + \ seq 20 permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n \ local-interface Vlan4094\n peer-address 10.255.252.7\n peer-link Port-Channel5\n \ reload-delay mlag 300\n reload-delay non-mlag 330\n!\nip route vrf MGMT 0.0.0.0/0 192.168.200.5\n!\nroute-map RM-CONN-2-BGP permit 10\n match ip address prefix-list @@ -1349,8 +1346,7 @@ cvp_configlets: Tenant_A_WAN_Zone vni 14\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.9\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml index 05137d98676..a2d87d7c177 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml @@ -494,8 +494,7 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.6\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -667,8 +666,7 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.7\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -1142,14 +1140,13 @@ cvp_configlets: \ vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WAN_Zone vni 14\n \ vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n \ vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n - \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\nip - address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8\n!\nip routing\nno - ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip - routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf - Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip - routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip prefix-list - PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n seq 20 - permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n + \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\n!\nip + routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing + vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip + routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf + Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip + prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n + \ seq 20 permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n \ local-interface Vlan4094\n peer-address 10.255.252.7\n peer-link Port-Channel5\n \ reload-delay mlag 300\n reload-delay non-mlag 330\n!\nip route vrf MGMT 0.0.0.0/0 192.168.200.5\n!\nroute-map RM-CONN-2-BGP permit 10\n match ip address prefix-list @@ -1349,8 +1346,7 @@ cvp_configlets: Tenant_A_WAN_Zone vni 14\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address - 10.255.1.9\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md index 5bd95c8015d..be94cd47837 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md @@ -509,7 +509,7 @@ interface Port-Channel19 | Loopback0 | EVPN_Overlay_Peering | default | - | | Loopback1 | VTEP_VXLAN_Tunnel_Source | default | - | | Loopback100 | vrf_with_loopbacks_from_overlapping_pool_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_overlapping_pool | - | -| Loopback101 | vrf_with_loopbacks_from_pod_pools_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_pod_pools | - | +| Loopback101 | vrf_with_loopbacks_from_pod_pools_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_pod_pools | 2001:db8:1::3/128 | | Loopback102 | vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS | vrf_with_loopbacks_dc1_pod1_only | - | #### Loopback Interfaces Device Configuration @@ -537,6 +537,7 @@ interface Loopback101 no shutdown vrf vrf_with_loopbacks_from_pod_pools ip address 10.101.101.5/32 + ipv6 address 2001:db8:1::3/128 ! interface Loopback102 description vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS @@ -1179,19 +1180,18 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| vrf_with_loopbacks_dc1_pod1_only | 10.102.101.5 | -| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.5 | -| vrf_with_loopbacks_from_pod_pools | 10.101.101.5 | +| vrf_with_loopbacks_dc1_pod1_only | - | - | +| vrf_with_loopbacks_from_overlapping_pool | - | - | +| vrf_with_loopbacks_from_pod_pools | 10.101.101.5 | 2001:db8:1::3 | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.5 -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.5 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.5 +ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::3 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md index 9a702567bb1..2104eabb5a2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md @@ -857,17 +857,15 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | -| vrf_with_loopbacks_from_pod_pools | 10.101.102.3 | +| vrf_with_loopbacks_from_overlapping_pool | - | - | +| vrf_with_loopbacks_from_pod_pools | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 -ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.102.3 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md index 1eeb0d61595..be99ca8a7b6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md @@ -484,7 +484,7 @@ interface Port-Channel19 | Loopback0 | EVPN_Overlay_Peering | default | - | | Loopback1 | VTEP_VXLAN_Tunnel_Source | default | - | | Loopback100 | vrf_with_loopbacks_from_overlapping_pool_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_overlapping_pool | - | -| Loopback101 | vrf_with_loopbacks_from_pod_pools_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_pod_pools | - | +| Loopback101 | vrf_with_loopbacks_from_pod_pools_VTEP_DIAGNOSTICS | vrf_with_loopbacks_from_pod_pools | 2001:db8:1::2/128 | | Loopback102 | vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS | vrf_with_loopbacks_dc1_pod1_only | - | #### Loopback Interfaces Device Configuration @@ -512,6 +512,7 @@ interface Loopback101 no shutdown vrf vrf_with_loopbacks_from_pod_pools ip address 10.101.101.4/32 + ipv6 address 2001:db8:1::2/128 ! interface Loopback102 description vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS @@ -1143,19 +1144,18 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| vrf_with_loopbacks_dc1_pod1_only | 10.102.101.4 | -| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.4 | -| vrf_with_loopbacks_from_pod_pools | 10.101.101.4 | +| vrf_with_loopbacks_dc1_pod1_only | - | - | +| vrf_with_loopbacks_from_overlapping_pool | - | - | +| vrf_with_loopbacks_from_pod_pools | 10.101.101.4 | 2001:db8:1::2 | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.4 -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.4 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.4 +ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::2 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md index 7379b4815cb..fcae259520c 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md @@ -750,17 +750,15 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | -| vrf_with_loopbacks_from_pod_pools | 10.101.201.3 | +| vrf_with_loopbacks_from_overlapping_pool | - | - | +| vrf_with_loopbacks_from_pod_pools | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 -ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.201.3 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg index 1dbe93d51a1..838face75ef 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg @@ -245,6 +245,7 @@ interface Loopback101 no shutdown vrf vrf_with_loopbacks_from_pod_pools ip address 10.101.101.5/32 + ipv6 address 2001:db8:1::3/128 ! interface Loopback102 description vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS @@ -334,9 +335,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! -ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.5 -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.5 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.5 +ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::3 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg index 66e5bec8c3f..f08d9ae7fcb 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg @@ -173,8 +173,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 -ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.102.3 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg index 19ec2b0d3ef..c6fbb89eee3 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg @@ -245,6 +245,7 @@ interface Loopback101 no shutdown vrf vrf_with_loopbacks_from_pod_pools ip address 10.101.101.4/32 + ipv6 address 2001:db8:1::2/128 ! interface Loopback102 description vrf_with_loopbacks_dc1_pod1_only_VTEP_DIAGNOSTICS @@ -328,9 +329,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! -ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.4 -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.4 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.4 +ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::2 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg index f82bd1c69ba..4d205dd2799 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg @@ -120,8 +120,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! -ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 -ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.201.3 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml index ba07e9e2daa..00870b43744 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml @@ -774,6 +774,7 @@ loopback_interfaces: shutdown: false vrf: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.5/32 + ipv6_address: 2001:db8:1::3/128 router_bfd: multihop: interval: 300 @@ -811,11 +812,10 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_dc1_pod1_only - ip_address: 10.102.101.5 - name: vrf_with_loopbacks_from_overlapping_pool - ip_address: 10.100.0.5 - name: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.5 + ipv6_address: 2001:db8:1::3 metadata: platform: vEOS-LAB domain_list: diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml index 21a32c9ae35..eff9970e500 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml @@ -473,9 +473,7 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_from_overlapping_pool - ip_address: 10.100.0.3 - name: vrf_with_loopbacks_from_pod_pools - ip_address: 10.101.102.3 metadata: platform: vEOS-LAB domain_list: diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml index 95581df170d..ba036d30292 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml @@ -736,6 +736,7 @@ loopback_interfaces: shutdown: false vrf: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.4/32 + ipv6_address: 2001:db8:1::2/128 router_bfd: multihop: interval: 300 @@ -773,11 +774,10 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_dc1_pod1_only - ip_address: 10.102.101.4 - name: vrf_with_loopbacks_from_overlapping_pool - ip_address: 10.100.0.4 - name: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.4 + ipv6_address: 2001:db8:1::2 metadata: platform: vEOS-LAB domain_list: diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml index fc7d932adc6..198a1d27118 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml @@ -334,9 +334,7 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_from_overlapping_pool - ip_address: 10.100.0.3 - name: vrf_with_loopbacks_from_pod_pools - ip_address: 10.101.201.3 vlans: - id: 4092 tenant: system diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/inventory/group_vars/TENANTS_NETWORKS.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/inventory/group_vars/TENANTS_NETWORKS.yml index 7202e465d84..bf16e9b868b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/inventory/group_vars/TENANTS_NETWORKS.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/inventory/group_vars/TENANTS_NETWORKS.yml @@ -114,10 +114,13 @@ tenants: loopback_ip_pools: - pod: DC1_POD1 ipv4_pool: 10.101.101.0/24 + ipv6_pool: 2001:db8:1::/48 - pod: DC1_POD2 ipv4_pool: 10.101.102.0/24 - pod: DC2_POD1 ipv4_pool: 10.101.201.0/24 + - pod: DC2_POD2 + ipv6_pool: 2001:db8:2::/48 svis: - id: 1101 name: test_svi diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg index 40b85219f60..9bd3063c92b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg @@ -256,7 +256,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing ip routing vrf 12345678 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg index 5455cf5784c..b7149f02e80 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg @@ -631,8 +631,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 -ip address virtual source-nat vrf Tenant_A_OSPF address 10.255.11.10 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg index bb54b8ab869..1941069343d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg @@ -596,8 +596,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 -ip address virtual source-nat vrf Tenant_A_OSPF address 10.255.11.11 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg index dad517d8a80..e4ae3b818c4 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg @@ -836,7 +836,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg index 182a6387d61..91eca930f9b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg @@ -802,7 +802,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg index 1856fb9f876..a5cc9399554 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg @@ -464,7 +464,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.21 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg index b696275a42d..490277f4ce1 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg @@ -464,7 +464,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.22 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg index ad49de8ad34..dd952355427 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg @@ -452,15 +452,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.8 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.8 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.8 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.8 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.8 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.8 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.8 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.8 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.8 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg index 504fcf2c78c..1b104f327ae 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg @@ -771,15 +771,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.3 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.3 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.3 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.3 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.3 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.3 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.3 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.3 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.3 ! ip access-list standard RP_ACL_VRF_OVERRIDE 10 permit 232.1.0.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg index 495fcda8c36..6adc7f204e6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg @@ -771,15 +771,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.4 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.4 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.4 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.4 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.4 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.4 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.4 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.4 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.4 ! ip access-list standard RP_ACL_VRF_OVERRIDE 10 permit 232.1.0.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg index a491bdd18fc..ef8ccadc595 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg @@ -523,15 +523,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.5 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.5 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.5 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.5 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.5 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.5 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.5 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.5 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.5 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg index 4e5477ce952..af472fc013d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg @@ -545,15 +545,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.6 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.6 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.6 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.6 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.6 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.6 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.6 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.6 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.6 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg index 13c5ba5e2e6..bd5e3b71081 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg @@ -545,15 +545,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.7 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.7 -ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.7 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.7 -ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.7 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.7 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.7 -ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.7 -ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.7 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg index 02ed421126e..5e70278b76e 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1A.cfg @@ -306,6 +306,7 @@ interface Loopback100 no shutdown vrf Tenant_X_OP_Zone ip address 10.255.1.33/32 + ipv6 address 2001:db8:1::1/128 ! interface Management1 description oob_management @@ -329,6 +330,7 @@ interface Vxlan1 ip virtual-router mac-address 00:1c:73:00:dc:01 ! ip address virtual source-nat vrf Tenant_X_OP_Zone address 10.255.1.33 +ipv6 address virtual source-nat vrf Tenant_X_OP_Zone address 2001:db8:1::1 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg index 3d9a1b8c13a..74bc4172cab 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF1B.cfg @@ -306,6 +306,7 @@ interface Loopback100 no shutdown vrf Tenant_X_OP_Zone ip address 10.255.1.34/32 + ipv6 address 2001:db8:1::2/128 ! interface Management1 description oob_management @@ -329,6 +330,7 @@ interface Vxlan1 ip virtual-router mac-address 00:1c:73:00:dc:01 ! ip address virtual source-nat vrf Tenant_X_OP_Zone address 10.255.1.34 +ipv6 address virtual source-nat vrf Tenant_X_OP_Zone address 2001:db8:1::2 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg index feaa7089e7e..82a958004f6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/MH-LEAF2A.cfg @@ -91,6 +91,7 @@ interface Loopback100 no shutdown vrf Tenant_X_OP_Zone ip address 10.255.1.35/32 + ipv6 address 2001:db8:1::3/128 ! interface Management1 description oob_management @@ -121,6 +122,7 @@ interface Vxlan1 ip virtual-router mac-address 00:1c:73:00:dc:01 ! ip address virtual source-nat vrf Tenant_X_OP_Zone address 10.255.1.35 +ipv6 address virtual source-nat vrf Tenant_X_OP_Zone address 2001:db8:1::3 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg index 56b3d209d5a..7287b0129d8 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg @@ -418,7 +418,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.109 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml index 7a34304cc8d..5f72cc707c7 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml @@ -587,6 +587,5 @@ vxlan_interface: vni: 41 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.9 metadata: platform: VEOS diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml index e7774342bbb..348691fe571 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml @@ -1269,8 +1269,6 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.10 - name: Tenant_A_OSPF - ip_address: 10.255.11.10 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml index 1ae794bf77a..1278aa7f0d7 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml @@ -1209,8 +1209,6 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.11 - name: Tenant_A_OSPF - ip_address: 10.255.11.11 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml index bad628b1e51..5c14e763e20 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml @@ -1636,7 +1636,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.12 monitor_sessions: - name: MonitoringSessionServer18WithDest sources: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml index 1c0517d2118..813730f37c5 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml @@ -1588,7 +1588,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.13 monitor_sessions: - name: MonitoringSessionServer18WithDest sources: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml index fb0e890348a..42327098c82 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml @@ -1064,6 +1064,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.21 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml index 2b78109cb8f..5aff6f9c889 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml @@ -1064,6 +1064,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.22 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml index 11433fa4e1d..e87211f06c6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml @@ -1144,23 +1144,14 @@ vxlan_interface: vni: 51 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.8 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.8 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.8 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.8 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.8 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.8 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.8 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.8 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.8 standard_access_lists: - name: RPS_ACL_VRF_Tenant_E_2 sequence_numbers: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml index c0353f2883d..e0657aaf309 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml @@ -1616,23 +1616,14 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.3 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.3 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.3 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.3 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.3 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.3 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.3 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.3 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.3 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml index bcf22d219da..07c9fdecc5b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml @@ -1616,23 +1616,14 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.4 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.4 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.4 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.4 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.4 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.4 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.4 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.4 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.4 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml index cf82bfb556a..918cf7f457d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml @@ -1285,23 +1285,14 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.5 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.5 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.5 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.5 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.5 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.5 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.5 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.5 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.5 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml index c18706a98cf..7a597a269a5 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml @@ -1317,23 +1317,14 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.6 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.6 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.6 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.6 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.6 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.6 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.6 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.6 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.6 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml index 75c8f21c2f2..a0bb40485d1 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml @@ -1317,23 +1317,14 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 - ip_address: 10.255.3.7 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 - ip_address: 10.255.1.7 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 - ip_address: 10.255.2.7 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 - ip_address: 10.255.42.7 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 - ip_address: 10.255.41.7 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE - ip_address: 10.255.55.7 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES - ip_address: 10.255.60.7 - name: TEN_E_L3_MULTICAST_TRANSIT - ip_address: 10.255.52.7 - name: TEN_E_PEG_L3_MULTICAST_ENABLED - ip_address: 10.255.51.7 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml index 0fc46cee128..7b13e1b4b3b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1A.yml @@ -371,6 +371,7 @@ loopback_interfaces: shutdown: false vrf: Tenant_X_OP_Zone ip_address: 10.255.1.33/32 + ipv6_address: 2001:db8:1::1/128 prefix_lists: - name: PL-LOOPBACKS-EVPN-OVERLAY sequence_numbers: @@ -421,6 +422,7 @@ vxlan_interface: virtual_source_nat_vrfs: - name: Tenant_X_OP_Zone ip_address: 10.255.1.33 + ipv6_address: 2001:db8:1::1 port_channel_interfaces: - name: Port-Channel10 description: server01_ES1_PortChanne1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml index 5a3b76fbc7b..d20945845a8 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF1B.yml @@ -371,6 +371,7 @@ loopback_interfaces: shutdown: false vrf: Tenant_X_OP_Zone ip_address: 10.255.1.34/32 + ipv6_address: 2001:db8:1::2/128 prefix_lists: - name: PL-LOOPBACKS-EVPN-OVERLAY sequence_numbers: @@ -421,6 +422,7 @@ vxlan_interface: virtual_source_nat_vrfs: - name: Tenant_X_OP_Zone ip_address: 10.255.1.34 + ipv6_address: 2001:db8:1::2 port_channel_interfaces: - name: Port-Channel10 description: server01_ES1_PortChanne1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml index 0f47d4edc7c..90134bebb13 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/MH-LEAF2A.yml @@ -244,6 +244,7 @@ loopback_interfaces: shutdown: false vrf: Tenant_X_OP_Zone ip_address: 10.255.1.35/32 + ipv6_address: 2001:db8:1::3/128 prefix_lists: - name: PL-LOOPBACKS-EVPN-OVERLAY sequence_numbers: @@ -342,5 +343,6 @@ vxlan_interface: virtual_source_nat_vrfs: - name: Tenant_X_OP_Zone ip_address: 10.255.1.35 + ipv6_address: 2001:db8:1::3 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml index 8306cec2ab9..895f103545d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml @@ -959,4 +959,3 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.109 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MH_TENANT_NETWORKS.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MH_TENANT_NETWORKS.yml index 3d720b2f893..8d945b3baf7 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MH_TENANT_NETWORKS.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/MH_TENANT_NETWORKS.yml @@ -10,6 +10,7 @@ tenants: vtep_diagnostic: loopback: 100 loopback_ip_range: 10.255.1.0/24 + loopback_ipv6_range: 2001:db8:1::/48 svis: - id: 310 name: Tenant_X_OP_Zone_1 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml index 9188eb29a44..6d4b6d28075 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml @@ -538,9 +538,7 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.3 - name: VRF11 - ip_address: 10.255.11.3 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml index 32822669cc7..1adca6f447c 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml @@ -601,9 +601,7 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.4 - name: VRF11 - ip_address: 10.255.11.4 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml index f168db9619a..4e9013d969e 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml @@ -554,9 +554,7 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.5 - name: VRF11 - ip_address: 10.255.11.5 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml index d9ad5c2500f..57a0ed8b80b 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml @@ -554,9 +554,7 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.6 - name: VRF11 - ip_address: 10.255.11.6 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml index dc39ec13cc6..5c32495b834 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml @@ -461,8 +461,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.13 - name: VRF11 - ip_address: 10.255.11.13 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml index a8f7be675c7..a4d7fcc9fbb 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml @@ -461,8 +461,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.14 - name: VRF11 - ip_address: 10.255.11.14 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml index dfedb507754..8281094ed41 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml @@ -532,8 +532,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.15 - name: VRF11 - ip_address: 10.255.11.15 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml index f8917deb9d5..d5d35af2152 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml @@ -532,8 +532,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.16 - name: VRF11 - ip_address: 10.255.11.16 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml index cd910ec9575..8d7a224670d 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml @@ -442,8 +442,6 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.17 - name: VRF11 - ip_address: 10.255.11.17 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml index 317d0acbe0c..efa286289d7 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml @@ -442,9 +442,7 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 - ip_address: 10.255.10.18 - name: VRF11 - ip_address: 10.255.11.18 metadata: platform: vEOS-lab interface_defaults: diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index ad5d6ce8726..01adcf39055 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1256,15 +1256,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.10 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index 56d0e1b03c5..40a563b4a74 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1256,15 +1256,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.11 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md index 97870cab41b..a94a2d54b57 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1731,13 +1731,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.12 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ``` diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md index c709ee58d2f..f6bbe2bf798 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1731,13 +1731,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.13 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ``` diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg index b0ed1e7ca9f..d3920416d61 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg @@ -393,7 +393,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg index 187dd5c7d14..279f2782f18 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg @@ -393,7 +393,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg index 2e79f6f817d..15aab141804 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg @@ -676,7 +676,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg index d8332788ad5..99f2095c22e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg @@ -676,7 +676,6 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index 157f375a496..a082f2c0352 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -827,6 +827,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.10 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index 504e77df06e..312d4a02e12 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -827,6 +827,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.11 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index 728dd1562d7..a2a0e5bdfed 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1393,6 +1393,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.12 metadata: platform: 7050SX3 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index 90763468ea1..0df33bdd70e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1393,6 +1393,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.13 metadata: platform: 7050SX3 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index 254d8fc2094..def2510908f 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1328,15 +1328,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.6 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index 3daa9d07e3e..807ad2bc6d3 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1328,15 +1328,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.7 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md index d3a380fa8f8..6df2ae96bf0 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md @@ -1247,15 +1247,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.12 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md index e1d893c650a..9e2361a7ce9 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md @@ -1247,15 +1247,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.13 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md index f3658a44902..3b889a7c605 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md @@ -1237,15 +1237,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.14 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.14 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md index 947cb334b44..2981768137d 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md @@ -1237,15 +1237,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.15 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.15 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md index ebdf1e742a4..9634405bcad 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1558,15 +1558,14 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.8 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md index 9ceabfec34e..1eefcb13594 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1532,15 +1532,14 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | -| Tenant_A_OP_Zone | 10.255.1.9 | +| Tenant_A_OP_Zone | - | - | ### Virtual Source NAT Configuration ```eos ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg index 41919bdf692..57120b70b48 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg @@ -399,7 +399,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg index 4f57b6894fa..05dab241f07 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg @@ -399,7 +399,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg index e83832c7b0e..b96c9a64c72 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg @@ -335,7 +335,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg index f0ae64a5c02..6ea9b11234b 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg @@ -335,7 +335,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg index 028247006f6..7cf196512e5 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg @@ -328,7 +328,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.14 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg index 3cfe012dfca..5dcf7adaae4 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg @@ -328,7 +328,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.15 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg index 86d81f3091c..a0c9b2f363a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg @@ -544,7 +544,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg index 191fbadb27c..6c5ab1e06f6 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg @@ -528,7 +528,6 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! -ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index 1a365e4af77..099adb08b47 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -908,6 +908,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.6 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index b4c7b462794..86a7da9346a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -908,6 +908,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.7 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml index 8c26d5716a6..4ae5a4a0cca 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml @@ -781,6 +781,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.12 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml index 3dff4843beb..75b8b88542a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml @@ -781,6 +781,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.13 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml index 3fdc7f5bd5a..03ff1fbc3da 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml @@ -767,6 +767,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.14 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml index 875c2e16199..8d66cfd5e71 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml @@ -767,6 +767,5 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.15 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index 892d97da4d0..221dc8d6eba 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1203,6 +1203,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.8 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index 0dc3336a19f..c6206796215 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1182,6 +1182,5 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone - ip_address: 10.255.1.9 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md index c3783592c4c..e4e03012a9b 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md @@ -10,6 +10,7 @@ | [virtual_source_nat_vrfs](## "virtual_source_nat_vrfs") | List, items: Dictionary | | | | | | [  - name](## "virtual_source_nat_vrfs.[].name") | String | Required, Unique | | | VRF Name. | | [    ip_address](## "virtual_source_nat_vrfs.[].ip_address") | String | | | | IPv4 Address. | + | [    ipv6_address](## "virtual_source_nat_vrfs.[].ipv6_address") | String | | | | IPv6 Address. | === "YAML" @@ -21,4 +22,7 @@ # IPv4 Address. ip_address: + + # IPv6 Address. + ipv6_address: ``` diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index fc5f2d80e87..679fe1e36ab 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -32,9 +32,11 @@ | [          loopback](## ".[].vrfs.[].vtep_diagnostic.loopback") | Integer | | | Min: 2
Max: 2100 | Loopback interface number, required when vtep_diagnotics defined.
| | [          loopback_description](## ".[].vrfs.[].vtep_diagnostic.loopback_description") | String | | | | Provide a custom description for loopback interface. | | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this ranged and assignedto each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| + | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range is set.
| | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, ptional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | | | | POD name. | | [              ipv4_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv4_pool") | String | | | | IPv4_address/Mask. | + | [              ipv6_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv6_pool") | String | | | | IPv6_address/Mask. | | [        static_routes](## ".[].vrfs.[].static_routes") | List, items: Dictionary | | | | List of static routes for v4 and/or v6.
This will create static routes inside the tenant VRF.
If nodes are not specified, all l3leafs that carry the VRF will also be applied the static routes.
If a node has a static route in the VRF, redistribute static will be automatically enabled in that VRF.
This automatic behavior can be overridden non-selectively with the redistribute_static knob for the VRF.
| | [          - destination_address_prefix](## ".[].vrfs.[].static_routes.[].destination_address_prefix") | String | | | | IPv4_address. | | [            gateway](## ".[].vrfs.[].static_routes.[].gateway") | String | | | | IPv4_address. | @@ -186,6 +188,11 @@ # Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ip_range: + # IPv6_address/Mask. + # Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id. + # Loopback is not created unless loopback_ipv6_range is set. + loopback_ipv6_range: + # For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. # This only takes effect when loopback_ip_range is not defined, ptional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). loopback_ip_pools: @@ -196,6 +203,9 @@ # IPv4_address/Mask. ipv4_pool: + # IPv6_address/Mask. + ipv6_pool: + # List of static routes for v4 and/or v6. # This will create static routes inside the tenant VRF. # If nodes are not specified, all l3leafs that carry the VRF will also be applied the static routes. diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 index 439a1d0f96f..2f972fb7863 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 @@ -10,10 +10,10 @@ ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | +| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | | -------------- | --------------------- | {% for vrf in virtual_source_nat_vrfs | arista.avd.natural_sort('name') %} -| {{ vrf.name }} | {{ vrf.ip_address }} | +| {{ vrf.name }} | {{ vrf.ip_address | arista.avd.default("-") }} | {{ vrf.ipv6_address | arista.avd.default("-") }} | {% endfor %} ### Virtual Source NAT Configuration diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 index 990b059de29..53ff4518449 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 @@ -10,5 +10,8 @@ {% if vrf.ip_address is arista.avd.defined %} ip address virtual source-nat vrf {{ vrf.name }} address {{ vrf.ip_address }} {% endif %} +{% if vrf.ipv6_address is arista.avd.defined %} +ipv6 address virtual source-nat vrf {{ vrf.name }} address {{ vrf.ipv6_address }} +{% endif %} {% endfor %} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json new file mode 100644 index 00000000000..b317495acb1 --- /dev/null +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json @@ -0,0 +1,31965 @@ +{ + "type": "object", + "properties": { + "aaa_accounting": { + "type": "object", + "properties": { + "exec": { + "type": "object", + "properties": { + "console": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Console" + }, + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exec" + }, + "system": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "System" + }, + "dot1x": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "commands": { + "type": "object", + "properties": { + "console": { + "type": "array", + "items": { + "type": "object", + "properties": { + "commands": { + "type": "string", + "description": "Privilege level 'all' or 0-15.", + "title": "Commands" + }, + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Console" + }, + "default": { + "type": "array", + "items": { + "type": "object", + "properties": { + "commands": { + "type": "string", + "description": "Privilege level 'all' or 0-15.", + "title": "Commands" + }, + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Accounting" + }, + "aaa_authentication": { + "type": "object", + "properties": { + "login": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Login authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + }, + "console": { + "type": "string", + "description": "Console authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Console" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Login" + }, + "enable": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Enable authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Enable" + }, + "dot1x": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "802.1x authentication method(s) as a string.\nExamples:\n- \"group radius\"\n- \"group MYGROUP group radius\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "policies": { + "type": "object", + "properties": { + "on_failure_log": { + "type": "boolean", + "title": "On Failure Log" + }, + "on_success_log": { + "type": "boolean", + "title": "On Success Log" + }, + "local": { + "type": "object", + "properties": { + "allow_nopassword": { + "type": "boolean", + "title": "Allow Nopassword" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local" + }, + "lockout": { + "type": "object", + "properties": { + "failure": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Failure" + }, + "duration": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Duration" + }, + "window": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Window" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lockout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Authentication" + }, + "aaa_authorization": { + "type": "object", + "properties": { + "policy": { + "type": "object", + "properties": { + "local_default_role": { + "type": "string", + "title": "Local Default Role" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy" + }, + "exec": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Exec authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exec" + }, + "config_commands": { + "type": "boolean", + "title": "Config Commands" + }, + "serial_console": { + "type": "boolean", + "title": "Serial Console" + }, + "dynamic": { + "type": "object", + "properties": { + "dot1x_additional_groups": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "dot1x Additional Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic" + }, + "commands": { + "type": "object", + "properties": { + "all_default": { + "type": "string", + "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\n", + "title": "All Default" + }, + "privilege": { + "type": "array", + "items": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Privilege level(s) 0-15.", + "title": "Level" + }, + "default": { + "type": "string", + "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Privilege" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Authorization" + }, + "aaa_root": { + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "sha512_password": { + "type": "string", + "title": "SHA512 Password" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Root" + }, + "aaa_server_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Group name.", + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "tacacs+", + "radius", + "ldap" + ], + "title": "Type" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "server": { + "type": "string", + "description": "Hostname or IP address.", + "title": "Server" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Servers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "AAA Server Groups" + }, + "access_lists": { + "type": "array", + "title": "IP Extended Access-Lists (legacy model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "permit_response_traffic": { + "type": "string", + "enum": [ + "nat" + ], + "description": "Permit response traffic automatically based on NAT translations.\nMinimum EOS version requirement 4.32.2F.", + "title": "Permit Response Traffic" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ip any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "address_locking": { + "type": "object", + "properties": { + "dhcp_servers_ipv4": { + "type": "array", + "items": { + "type": "string", + "description": "DHCP server IPv4 address." + }, + "title": "DHCP Servers IPv4" + }, + "disabled": { + "type": "boolean", + "description": "Disable IP locking on configured ports.", + "title": "Disabled" + }, + "leases": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "IP address.", + "title": "IP" + }, + "mac": { + "type": "string", + "description": "MAC address (hhhh.hhhh.hhhh or hh:hh:hh:hh:hh:hh).", + "title": "MAC" + } + }, + "required": [ + "ip", + "mac" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Leases" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "locked_address": { + "type": "object", + "properties": { + "expiration_mac_disabled": { + "type": "boolean", + "description": "Configure deauthorizing locked addresses upon MAC aging out.", + "title": "Expiration MAC Disabled" + }, + "ipv4_enforcement_disabled": { + "type": "boolean", + "description": "Configure enforcement for locked IPv4 addresses.", + "title": "IPv4 Enforcement Disabled" + }, + "ipv6_enforcement_disabled": { + "type": "boolean", + "description": "Configure enforcement for locked IPv6 addresses.", + "title": "IPv6 Enforcement Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Locked Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "agents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Agent name.", + "title": "Name" + }, + "environment_variables": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Environment variable name.", + "title": "Name" + }, + "value": { + "type": "string", + "description": "Environment variable value.", + "title": "Value" + } + }, + "required": [ + "value", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Environment Variables" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Agents" + }, + "aliases": { + "type": "string", + "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```\n", + "title": "Aliases" + }, + "application_traffic_recognition": { + "type": "object", + "description": "Application traffic recognition configuration.", + "properties": { + "categories": { + "type": "array", + "description": "List of categories.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Category name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Categories" + }, + "field_sets": { + "type": "object", + "properties": { + "l4_ports": { + "type": "array", + "description": "L4 port field-set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "L4 port field-set name.", + "title": "Name" + }, + "port_values": { + "type": "array", + "items": { + "type": "string", + "description": "Port values or range of port values.\nPort values are between 0 and 65535." + }, + "title": "Port Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Ports" + }, + "ipv4_prefixes": { + "type": "array", + "description": "IPv4 prefix field set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 prefix field-set name.", + "title": "Name" + }, + "prefix_values": { + "type": "array", + "items": { + "type": "string", + "description": "IP prefix (ex 1.2.3.0/24)." + }, + "title": "Prefix Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Field Sets" + }, + "applications": { + "type": "object", + "properties": { + "ipv4_applications": { + "type": "array", + "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "src_prefix_set_name": { + "type": "string", + "description": "Source prefix set name.", + "title": "Src Prefix Set Name" + }, + "dest_prefix_set_name": { + "type": "string", + "description": "Destination prefix set name.", + "title": "Dest Prefix Set Name" + }, + "dscp_ranges": { + "type": "array", + "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", + "items": { + "type": "string", + "description": "DSCP value or range syntax.", + "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" + }, + "title": "DSCP Ranges" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Applications" + }, + "l4_applications": { + "type": "array", + "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Applications" + }, + "application_profiles": { + "type": "array", + "description": "Group of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Profile name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications part of the application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + }, + "application_transports": { + "type": "array", + "description": "List of transport protocols.", + "items": { + "type": "string", + "description": "Transport name.", + "enum": [ + "http", + "https", + "udp", + "tcp", + "ip", + "ip6", + "ssl", + "rtp", + "sctp", + "quic" + ] + }, + "title": "Application Transports" + }, + "categories": { + "type": "array", + "description": "Categories under this application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of a category.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Categories" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Application Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Application Traffic Recognition" + }, + "arp": { + "type": "object", + "properties": { + "persistent": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Restore the ARP cache after reboot.", + "title": "Enabled" + }, + "refresh_delay": { + "type": "integer", + "description": "Time to wait in seconds before refreshing the ARP cache after reboot (EOS default 600).", + "minimum": 600, + "maximum": 3600, + "title": "Refresh Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Persistent" + }, + "aging": { + "type": "object", + "properties": { + "timeout_default": { + "description": "Timeout in seconds.", + "type": "integer", + "minimum": 60, + "maximum": 65535, + "title": "Timeout Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Aging" + }, + "static_entries": { + "type": "array", + "description": "Static ARP entries.", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "ARP entry IPv4 address.", + "title": "IPv4 Address" + }, + "vrf": { + "type": "string", + "description": "ARP entry VRF.", + "title": "VRF" + }, + "mac_address": { + "type": "string", + "description": "ARP entry MAC address.", + "pattern": "^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$", + "title": "MAC Address" + } + }, + "required": [ + "ipv4_address", + "mac_address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ARP" + }, + "as_path": { + "type": "object", + "properties": { + "regex_mode": { + "type": "string", + "enum": [ + "asn", + "string" + ], + "title": "Regex Mode" + }, + "access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access List Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "match": { + "type": "string", + "description": "Regex To Match.", + "title": "Match" + }, + "origin": { + "type": "string", + "enum": [ + "any", + "egp", + "igp", + "incomplete" + ], + "default": "any", + "title": "Origin" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Access Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "avd_data_conversion_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug", + "quiet" + ], + "default": "debug", + "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", + "title": "AVD Data Conversion Mode" + }, + "avd_data_validation_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug" + ], + "default": "warning", + "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", + "title": "AVD Data Validation Mode" + }, + "banners": { + "type": "object", + "properties": { + "login": { + "type": "string", + "description": "Multiline string ending with EOF on the last line.", + "title": "Login" + }, + "motd": { + "type": "string", + "description": "Multiline string ending with EOF on the last line.", + "title": "Motd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Banners" + }, + "bgp_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "neighbors": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Neighbors" + }, + "bgp_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Profile Name." + }, + "title": "BGP Maintenance Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "BGP Groups" + }, + "boot": { + "title": "System Boot Settings", + "description": "Set the Aboot password.\n", + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "default": "sha512", + "title": "Hash Algorithm" + }, + "key": { + "description": "Hashed Password.", + "type": "string", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "class_maps": { + "type": "object", + "title": "QOS Class-maps", + "properties": { + "pbr": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class-Map Name.", + "title": "Name" + }, + "ip": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "Standard Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "PBR" + }, + "qos": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class-Map Name.", + "title": "Name" + }, + "vlan": { + "type": "string", + "description": "VLAN value(s) or range(s) of VLAN values.", + "title": "VLAN" + }, + "cos": { + "type": "string", + "description": "CoS value(s) or range(s) of CoS values.", + "title": "COS" + }, + "ip": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "IPv4 Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP" + }, + "ipv6": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "IPv6 Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "clock": { + "type": "object", + "properties": { + "timezone": { + "type": "string", + "title": "Timezone" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Clock" + }, + "community_lists": { + "type": "array", + "title": "Community Lists (legacy model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit GSHUT 65123:123\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "config_comment": { + "type": "string", + "description": "Add a comment to provide information about the configuration.\nThis comment will be rendered at the top of the generated configuration.", + "title": "Config Comment" + }, + "custom_templates": { + "type": "array", + "title": "Extensibility with Custom Templates", + "description": "- Custom templates can be added below the playbook directory.\n- If a location above the directory is desired, a symbolic link can be used.\n- Example under the `playbooks` directory create symbolic link with the following command:\n\n ```bash\n ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n ```\n\n- The output will be rendered at the end of the configuration.\n- The order of custom templates in the list can be important if they overlap.\n- It is recommended to use a `!` delimiter at the top of each custom template.\n\nAdd `custom_templates` to group/host variables:\n", + "items": { + "type": "string", + "description": "Template relative path below playbook directory." + } + }, + "cvx": { + "type": "object", + "description": "CVX server features are not supported on physical switches. See `management_cvx` for client configurations.", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "peer_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or hostname." + }, + "title": "Peer Hosts" + }, + "services": { + "type": "object", + "properties": { + "mcs": { + "type": "object", + "properties": { + "redis": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "Hashed password using the password_type.", + "title": "Password" + }, + "password_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Password Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redis" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MCS" + }, + "vxlan": { + "type": "object", + "description": "VXLAN Controller service.", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vtep_mac_learning": { + "type": "string", + "enum": [ + "control-plane", + "data-plane" + ], + "title": "Vtep MAC Learning" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CVX" + }, + "daemon_terminattr": { + "type": "object", + "description": "You can either provide a list of IPs/FQDNs to target on-premise Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming to multiple clusters both on-prem and cloud service is supported.\n\n!!! note\n For TerminAttr version recommendation and EOS compatibility matrix, please refer to the latest TerminAttr Release Notes\n which always contain the latest recommended versions and minimum required versions per EOS release.\n", + "properties": { + "cvaddrs": { + "type": "array", + "description": "Streaming address(es) for CloudVision single cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", + "items": { + "type": "string", + "description": "Server address in the format `:`." + }, + "title": "Cvaddrs" + }, + "clusters": { + "type": "array", + "description": "Multiple CloudVision clusters.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Cluster Name.", + "title": "Name" + }, + "cvaddrs": { + "type": "array", + "description": "Streaming address(es) for CloudVision cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", + "items": { + "type": "string", + "description": "Server address in the format `:`." + }, + "title": "Cvaddrs" + }, + "cvauth": { + "type": "object", + "description": "Authentication scheme used to connect to CloudVision.\n", + "properties": { + "method": { + "type": "string", + "enum": [ + "token", + "token-secure", + "key", + "certs" + ], + "title": "Method" + }, + "key": { + "type": "string", + "title": "Key" + }, + "token_file": { + "type": "string", + "description": "Token file path.\ne.g. \"/tmp/token\"\n", + "title": "Token File" + }, + "cert_file": { + "type": "string", + "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", + "title": "Cert File" + }, + "ca_file": { + "type": "string", + "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", + "title": "Ca File" + }, + "key_file": { + "type": "string", + "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", + "title": "Key File" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cvauth" + }, + "cvobscurekeyfile": { + "type": "boolean", + "description": "Encrypt the private key used for authentication to CloudVision.\n", + "title": "Cvobscurekeyfile" + }, + "cvproxy": { + "type": "string", + "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", + "title": "Cvproxy" + }, + "cvsourceip": { + "type": "string", + "description": "Set source IP address in case of in-band management.\n", + "title": "Cvsourceip" + }, + "cvsourceintf": { + "type": "string", + "description": "Set source interface in case of in-band management. Available as of TerminAttr v1.23.0.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", + "title": "Cvsourceintf" + }, + "cvvrf": { + "type": "string", + "description": "The VRF to use to connect to CloudVision.\n", + "title": "Cvvrf" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Clusters" + }, + "cvauth": { + "type": "object", + "description": "Authentication scheme used to connect to CloudVision.\n", + "properties": { + "method": { + "type": "string", + "enum": [ + "token", + "token-secure", + "key", + "certs" + ], + "title": "Method" + }, + "key": { + "type": "string", + "title": "Key" + }, + "token_file": { + "type": "string", + "description": "Token file path.\ne.g. \"/tmp/token\"\n", + "title": "Token File" + }, + "cert_file": { + "type": "string", + "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", + "title": "Cert File" + }, + "ca_file": { + "type": "string", + "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", + "title": "Ca File" + }, + "key_file": { + "type": "string", + "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", + "title": "Key File" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cvauth" + }, + "cvobscurekeyfile": { + "type": "boolean", + "description": "Encrypt the private key used for authentication to CloudVision.\n", + "title": "Cvobscurekeyfile" + }, + "cvproxy": { + "type": "string", + "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", + "title": "Cvproxy" + }, + "cvsourceip": { + "type": "string", + "description": "Set source IP address in case of in-band management.\n", + "title": "Cvsourceip" + }, + "cvsourceintf": { + "type": "string", + "description": "Set source interface in case of in-band management.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", + "title": "Cvsourceintf" + }, + "cvvrf": { + "type": "string", + "description": "The VRF to use to connect to CloudVision.\n", + "title": "Cvvrf" + }, + "cvgnmi": { + "type": "boolean", + "description": "Stream states from EOS gNMI servers (Openconfig) to CloudVision. Available as of TerminAttr v1.13.1.\n", + "title": "Cvgnmi" + }, + "disable_aaa": { + "type": "boolean", + "description": "Disable AAA authorization and accounting.\nWhen setting this flag, all commands pushed from CloudVision are applied directly to the CLI without authorization.\n", + "title": "Disable AAA" + }, + "grpcaddr": { + "type": "string", + "description": "Set the gRPC server address, the default is 127.0.0.1:6042.\ne.g. \"MGMT/0.0.0.0:6042\"\n", + "title": "Grpcaddr" + }, + "grpcreadonly": { + "type": "boolean", + "description": "gNMI read-only mode - Disable gnmi.Set().\n", + "title": "Grpcreadonly" + }, + "ingestexclude": { + "type": "string", + "description": "Exclude paths from Sysdb on the ingest side.\ne.g. \"/Sysdb/cell/1/agent,/Sysdb/cell/2/agent\"\n", + "title": "Ingestexclude" + }, + "smashexcludes": { + "type": "string", + "description": "Exclude paths from the shared memory table.\ne.g. \"ale,flexCounter,hardware,kni,pulse,strata\"\n", + "title": "Smashexcludes" + }, + "taillogs": { + "type": "string", + "description": "Enable log file collection; /var/log/messages is streamed by default if no path is set.\ne.g. \"/var/log/messages\"\n", + "title": "Taillogs" + }, + "ecodhcpaddr": { + "type": "string", + "description": "ECO DHCP Collector address or ECO DHCP Fingerprint listening address in standalone mode (default \"127.0.0.1:67\").\n", + "title": "Ecodhcpaddr" + }, + "ipfix": { + "type": "boolean", + "description": "Enable IPFIX provider (TerminAttr default is true).\nThis flag is enabled by default and does not have to be added to the daemon configuration.\n", + "title": "Ipfix" + }, + "ipfixaddr": { + "type": "string", + "description": "ECO IPFIX Collector address to listen on to receive IPFIX packets (TerminAttr default \"127.0.0.1:4739\").\n", + "title": "Ipfixaddr" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow provider (TerminAttr default is true).\n", + "title": "Sflow" + }, + "sflowaddr": { + "type": "string", + "description": "ECO sFlow Collector address to listen on to receive sFlow packets (TerminAttr default \"127.0.0.1:6343\").\n", + "title": "Sflowaddr" + }, + "cvconfig": { + "type": "boolean", + "description": "Subscribe to dynamic device configuration from CloudVision (TerminAttr default is false).\n", + "title": "Cvconfig" + }, + "cvcompression": { + "type": "string", + "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\n\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", + "deprecated": true, + "title": "Cvcompression" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Daemon TerminAttr" + }, + "daemons": { + "type": "array", + "title": "Custom Daemons", + "description": "This will add a daemon to the eos configuration that is most useful when trying to run OpenConfig clients like ocprometheus.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Daemon Name.", + "title": "Name" + }, + "exec": { + "type": "string", + "description": "command to run as a daemon.\n", + "title": "Exec" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "required": [ + "exec", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "dhcp_relay": { + "type": "object", + "properties": { + "servers": { + "type": "array", + "items": { + "type": "string", + "description": "Server IP or Hostname." + }, + "title": "Servers" + }, + "tunnel_requests_disabled": { + "type": "boolean", + "title": "Tunnel Requests Disabled" + }, + "mlag_peerlink_requests_disabled": { + "type": "boolean", + "title": "MLAG Peerlink Requests Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "DHCP Relay" + }, + "dhcp_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "vrf": { + "type": "string", + "description": "VRF in which to configure the DHCP server, use `default` to indicate default VRF.", + "title": "VRF" + }, + "lease_time_ipv4": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time IPv4" + }, + "lease_time_ipv6": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time IPv6" + }, + "dns_domain_name_ipv4": { + "type": "string", + "title": "DNS Domain Name IPv4" + }, + "dns_domain_name_ipv6": { + "type": "string", + "title": "DNS Domain Name IPv6" + }, + "dns_servers_ipv4": { + "type": "array", + "minItems": 1, + "description": "List of DNS servers for IPv4 clients.", + "items": { + "type": "string", + "description": "IPv4 address of DNS server." + }, + "title": "DNS Servers IPv4" + }, + "dns_servers_ipv6": { + "type": "array", + "minItems": 1, + "description": "List of DNS servers for IPv6 clients.", + "items": { + "type": "string", + "description": "IPv6 address of DNS server." + }, + "title": "DNS Servers IPv6" + }, + "tftp_server": { + "type": "object", + "properties": { + "file_ipv4": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "description": "Name of TFTP file for IPv4 clients.", + "title": "File IPv4" + }, + "file_ipv6": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "description": "Name of TFTP file for IPv6 clients.", + "title": "File IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tftp Server" + }, + "ipv4_vendor_options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vendor_id": { + "type": "string", + "title": "Vendor ID" + }, + "sub_options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "title": "Code" + }, + "string": { + "type": "string", + "description": "String value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "title": "String" + }, + "ipv4_address": { + "type": "string", + "description": "IPv4 address value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "title": "IPv4 Address" + }, + "array_ipv4_address": { + "type": "array", + "description": "Array of IPv4 addresses for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "items": { + "type": "string" + }, + "title": "Array IPv4 Address" + } + }, + "required": [ + "code" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sub Options" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "vendor_id" + ] + }, + "title": "IPv4 Vendor Options" + }, + "subnets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "subnet": { + "description": "IPv4/IPv6 subnet.", + "type": "string", + "title": "Subnet" + }, + "name": { + "type": "string", + "title": "Name" + }, + "default_gateway": { + "type": "string", + "title": "Default Gateway" + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + }, + "title": "DNS Servers" + }, + "ranges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "start": { + "type": "string", + "title": "Start" + }, + "end": { + "type": "string", + "title": "End" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Ranges" + }, + "lease_time": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time" + }, + "reservations": { + "description": "DHCP client reservations.", + "type": "array", + "items": { + "type": "object", + "properties": { + "mac_address": { + "type": "string", + "description": "Ethernet address in format - HHHH.HHHH.HHHH", + "title": "MAC Address" + }, + "hostname": { + "type": "string", + "title": "Hostname" + }, + "ipv4_address": { + "type": "string", + "description": "Valid IPv4 address from the given subnet.\nThis should only be used within an IPv4 subnet.", + "title": "IPv4 Address" + }, + "ipv6_address": { + "type": "string", + "description": "Valid IPv6 address from the given subnet.\nThis should only be used within an IPv6 subnet.", + "title": "IPv6 Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "mac_address" + ] + }, + "title": "Reservations" + } + }, + "required": [ + "subnet" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Subnets" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the dhcp server in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "vrf" + ] + }, + "title": "DHCP Servers" + }, + "dns_domain": { + "type": "string", + "description": "Domain Name.", + "title": "DNS Domain" + }, + "domain_list": { + "type": "array", + "description": "Search list of DNS domains.", + "items": { + "type": "string", + "description": "Domain name." + }, + "title": "Domain List" + }, + "dot1x": { + "type": "object", + "title": "Global 802.1x Authentication", + "properties": { + "system_auth_control": { + "type": "boolean", + "title": "System Auth Control" + }, + "protocol_lldp_bypass": { + "type": "boolean", + "title": "Protocol LLDP Bypass" + }, + "protocol_bpdu_bypass": { + "type": "boolean", + "title": "Protocol Bpdu Bypass" + }, + "dynamic_authorization": { + "type": "boolean", + "title": "Dynamic Authorization" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "delay": { + "type": "integer", + "minimum": 0, + "maximum": 300, + "title": "Delay" + }, + "hold_period": { + "type": "integer", + "minimum": 1, + "maximum": 300, + "title": "Hold Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "radius_av_pair": { + "type": "object", + "properties": { + "service_type": { + "type": "boolean", + "title": "Service Type" + }, + "framed_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 9236, + "title": "Framed MTU" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Radius Av Pair" + }, + "aaa": { + "type": "object", + "description": "Configure AAA parameters.", + "properties": { + "unresponsive": { + "type": "object", + "description": "Configure AAA timeout options.", + "properties": { + "eap_response": { + "type": "string", + "description": "EAP response to send.", + "enum": [ + "success", + "disabled" + ], + "title": "Eap Response" + }, + "action": { + "type": "object", + "description": "Set action for supplicant when AAA times out.", + "properties": { + "apply_cached_results": { + "type": "boolean", + "description": "Use results from a previous AAA response.", + "title": "Apply Cached Results" + }, + "cached_results_timeout": { + "type": "object", + "properties": { + "time_duration": { + "type": "integer", + "minimum": 1, + "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", + "title": "Time Duration" + }, + "time_duration_unit": { + "type": "string", + "enum": [ + "days", + "hours", + "minutes", + "seconds" + ], + "title": "Time Duration Unit" + } + }, + "required": [ + "time_duration_unit" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cached Results Timeout" + }, + "apply_alternate": { + "type": "boolean", + "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive action apply cached-results else traffic allow", + "title": "Apply Alternate" + }, + "traffic_allow": { + "type": "boolean", + "description": "Set action for supplicant traffic when AAA times out.", + "title": "Traffic Allow" + }, + "traffic_allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Traffic Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Action" + }, + "phone_action": { + "type": "object", + "description": "Set action for supplicant when AAA times out.", + "properties": { + "apply_cached_results": { + "type": "boolean", + "description": "Use results from a previous AAA response.", + "title": "Apply Cached Results" + }, + "cached_results_timeout": { + "type": "object", + "properties": { + "time_duration": { + "type": "integer", + "minimum": 1, + "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", + "title": "Time Duration" + }, + "time_duration_unit": { + "type": "string", + "enum": [ + "days", + "hours", + "minutes", + "seconds" + ], + "title": "Time Duration Unit" + } + }, + "required": [ + "time_duration_unit" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cached Results Timeout" + }, + "apply_alternate": { + "type": "boolean", + "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive phone action apply cached-results else traffic allow", + "title": "Apply Alternate" + }, + "traffic_allow": { + "description": "Set action for supplicant traffic when AAA times out.", + "type": "boolean", + "title": "Traffic Allow" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone Action" + }, + "recovery_action_reauthenticate": { + "type": "boolean", + "title": "Recovery Action Reauthenticate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unresponsive" + }, + "accounting_update_interval": { + "type": "integer", + "minimum": 5, + "maximum": 65535, + "description": "Interval period in seconds.", + "title": "Accounting Update Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA" + }, + "captive_portal": { + "type": "object", + "description": "Web authentication feature authenticates a supplicant through a web page, referred to as a captive portal.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "url": { + "type": "string", + "description": "Supported URL type:\n - http: http://[:]\n - https: https://[:]", + "title": "URL" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + }, + "start_limit_infinite": { + "type": "boolean", + "description": "Set captive-portal start limit to infinte.", + "title": "Start Limit Infinite" + }, + "access_list_ipv4": { + "type": "string", + "description": "Standard access-list name.", + "title": "Access List IPv4" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Captive Portal" + }, + "supplicant": { + "type": "object", + "properties": { + "profiles": { + "description": "Dot1x supplicant profiles.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "eap_method": { + "type": "string", + "description": "Extensible Authentication Protocol method:\n - EAP Flexible Authentication via Secure Tunneling.\n - EAP with Transport Layer Security.", + "enum": [ + "fast", + "tls" + ], + "title": "Eap Method" + }, + "identity": { + "type": "string", + "description": "User identity.", + "title": "Identity" + }, + "passphrase_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Passphrase Type" + }, + "passphrase": { + "type": "string", + "description": "Extensible Authentication Protocol password.", + "title": "Passphrase" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "logging": { + "type": "boolean", + "description": "Enable supplicant logging.", + "title": "Logging" + }, + "disconnect_cached_results_timeout": { + "type": "integer", + "minimum": 60, + "maximum": 65535, + "description": "Timeout in seconds for removing a disconnected supplicant.", + "title": "Disconnect Cached Results Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Supplicant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "dps_interfaces": { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "\"Dps1\" is currently the only supported interface.", + "enum": [ + "Dps1" + ], + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "mtu": { + "type": "integer", + "description": "Maximum Transmission Unit in bytes.", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name,", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment Size for IPv4.", + "minimum": 64, + "maximum": 65495, + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment Size for IPv6.", + "minimum": 64, + "maximum": 65475, + "title": "IPv6" + }, + "direction": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Dps interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "DPS Interfaces" + }, + "dynamic_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Dynamic prefix-list name.", + "title": "Name" + }, + "match_map": { + "type": "string", + "description": "Route-map name.", + "title": "Match Map" + }, + "prefix_list": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "description": "Prefix-list name.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Prefix-list name.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic Prefix Lists" + }, + "enable_password": { + "type": "object", + "properties": { + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.\n", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Enable Password" + }, + "eos_cli": { + "type": "string", + "description": "Multiline string with EOS CLI rendered directly on the root level of the final EOS configuration.", + "title": "EOS CLI" + }, + "eos_cli_config_gen_configuration": { + "type": "object", + "properties": { + "hide_passwords": { + "type": "boolean", + "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the configuration if true.\n", + "default": false, + "title": "Hide Passwords" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EOS CLI Config Gen Configuration" + }, + "eos_cli_config_gen_documentation": { + "type": "object", + "properties": { + "hide_passwords": { + "type": "boolean", + "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the documentation if true.\n", + "default": true, + "title": "Hide Passwords" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EOS CLI Config Gen Documentation" + }, + "errdisable": { + "type": "object", + "properties": { + "detect": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "acl", + "arp-inspection", + "dot1x", + "link-change", + "tapagg", + "xcvr-misconfigured", + "xcvr-overheat", + "xcvr-power-unsupported" + ] + }, + "title": "Causes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Detect" + }, + "recovery": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "arp-inspection", + "bpduguard", + "dot1x", + "hitless-reload-down", + "lacp-rate-limit", + "link-flap", + "no-internal-vlan", + "portchannelguard", + "portsec", + "speed-misconfigured", + "tap-port-init", + "tapagg", + "uplink-failure-detection", + "xcvr-misconfigured", + "xcvr-overheat", + "xcvr-power-unsupported", + "xcvr-unsupported" + ] + }, + "title": "Causes" + }, + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "default": 300, + "minimum": 30, + "maximum": 86400, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Recovery" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Errdisable" + }, + "ethernet_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "load_interval": { + "type": "integer", + "minimum": 0, + "maximum": 600, + "description": "Interval in seconds for updating interface counters.", + "title": "Load Interval" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "native_vlan": { + "type": "integer", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "tagged phone", + "untagged", + "untagged phone" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q", + "port-channel-member" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "address_locking": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Enable address locking for IPv4.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Enable address locking for IPv6.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "desired", + "on", + "off" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "error_correction_encoding": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "fire_code": { + "type": "boolean", + "title": "Fire Code" + }, + "reed_solomon": { + "type": "boolean", + "title": "Reed Solomon" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Error Correction Encoding" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulations are all optional and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask or \"dhcp\".", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IP Address Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "dhcp_client_accept_default_route": { + "type": "boolean", + "description": "Install default-route obtained via DHCP.", + "title": "DHCP Client Accept Default Route" + }, + "dhcp_server_ipv4": { + "type": "boolean", + "description": "Enable IPv4 DHCP server.", + "title": "DHCP Server IPv4" + }, + "dhcp_server_ipv6": { + "type": "boolean", + "description": "Enable IPv6 DHCP server.", + "title": "DHCP Server IPv6" + }, + "ip_helpers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_nat": { + "type": "object", + "properties": { + "service_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Service Profile" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "multicast": { + "type": "object", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "mac_security": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Security" + }, + "tcp_mss_ceiling": { + "type": "object", + "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", + "properties": { + "ipv4_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv4 Segment Size" + }, + "ipv6_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv6 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "channel_group": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "mode": { + "type": "string", + "enum": [ + "on", + "active", + "passive" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Channel Group" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "poe": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "profile": { + "type": "string", + "description": "Interface profile.", + "title": "Profile" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "congestion_drops": { + "type": "boolean", + "title": "Congestion Drops" + }, + "spanning_tree": { + "type": "boolean", + "title": "Spanning Tree" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "dot1x": { + "type": "object", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Value can be 60-4294967295 or 'server'.", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + }, + "eapol": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "authentication_failure_fallback_mba": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure Fallback Mba" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Eapol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "priority_flow_control": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "priorities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "title": "No Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "priority" + ] + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "lacp_timer": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "fast", + "normal" + ], + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 3000, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "lacp_port_priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "LACP Port Priority" + }, + "transceiver": { + "type": "object", + "properties": { + "frequency": { + "type": "string", + "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", + "title": "Frequency" + }, + "frequency_unit": { + "type": "string", + "enum": [ + "ghz" + ], + "description": "Unit of Transceiver Laser Frequency.", + "title": "Frequency Unit" + }, + "media": { + "type": "object", + "properties": { + "override": { + "type": "string", + "description": "Transceiver type.", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Media" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transceiver" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "sync_e": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "priority": { + "type": "string", + "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "port_profile": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Port Profile" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Uc TX Queues" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "max", + "max_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "TX Queues" + }, + "vrrp_ids": { + "type": "array", + "description": "VRRP model.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "switchport": { + "type": "object", + "properties": { + "port_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "mac_address_maximum": { + "type": "object", + "description": "Maximum number of MAC addresses allowed on the interface.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable port level check for port security (only in violation 'shutdown' mode).", + "title": "Disabled" + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "MAC address limit.", + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Maximum" + }, + "violation": { + "type": "object", + "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "shutdown", + "protect" + ], + "description": "Configure port security mode.", + "title": "Mode" + }, + "protect_log": { + "type": "boolean", + "description": "Log new addresses seen after limit is reached in protect mode.", + "title": "Protect Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Violation" + }, + "vlan_default_mac_address_maximum": { + "type": "integer", + "minimum": 0, + "maximum": 1000, + "description": "Default maximum MAC addresses for all VLANs on this interface.", + "title": "VLAN Default MAC Address Maximum" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", + "title": "Range" + }, + "mac_address_maximum": { + "type": "integer", + "title": "MAC Address Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "range" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Security" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ethernet Interfaces" + }, + "event_handlers": { + "type": "array", + "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Event Handler Name.", + "title": "Name" + }, + "action_type": { + "type": "string", + "enum": [ + "bash", + "increment", + "log" + ], + "title": "Action Type" + }, + "action": { + "type": "string", + "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", + "deprecated": true, + "title": "Action" + }, + "actions": { + "type": "object", + "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", + "properties": { + "bash_command": { + "type": "string", + "description": "Define BASH command action. Command could be multiline also.", + "title": "Bash Command" + }, + "log": { + "type": "boolean", + "description": "Log a message when the event is triggered.", + "title": "Log" + }, + "increment_device_health_metric": { + "type": "string", + "description": "Name of device-health metric.", + "title": "Increment Device Health Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Actions" + }, + "delay": { + "type": "integer", + "description": "Event-handler delay in seconds.\n", + "title": "Delay" + }, + "trigger": { + "type": "string", + "description": "Configure event trigger condition.\n", + "enum": [ + "on-boot", + "on-counters", + "on-intf", + "on-logging", + "on-maintenance", + "on-startup-config", + "vm-tracer vm" + ], + "title": "Trigger" + }, + "trigger_on_counters": { + "type": "object", + "properties": { + "condition": { + "type": "string", + "description": "Set the logical expression to evaluate.", + "title": "Condition" + }, + "granularity_per_source": { + "type": "boolean", + "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", + "title": "Granularity Per Source" + }, + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Counters" + }, + "trigger_on_logging": { + "type": "object", + "properties": { + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages.", + "title": "Regex" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Logging" + }, + "trigger_on_intf": { + "type": "object", + "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", + "properties": { + "interface": { + "type": "string", + "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", + "title": "Interface" + }, + "ip": { + "type": "boolean", + "description": "Action is triggered upon changes to interface IP address assignment.", + "title": "IP" + }, + "ipv6": { + "type": "boolean", + "description": "Action is triggered upon changes to interface ipv6 address assignment.", + "title": "IPv6" + }, + "operstatus": { + "type": "boolean", + "description": "Action is triggered upon changes to interface operStatus.", + "title": "Operstatus" + } + }, + "required": [ + "interface" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Intf" + }, + "trigger_on_maintenance": { + "description": "Settings required for trigger 'on-maintenance'.", + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": [ + "enter", + "exit" + ], + "title": "Operation" + }, + "bgp_peer": { + "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", + "type": "string", + "title": "BGP Peer" + }, + "action": { + "type": "string", + "description": "Action for maintenance operation.", + "enum": [ + "after", + "before", + "all", + "begin", + "end" + ], + "title": "Action" + }, + "stage": { + "type": "string", + "description": "Action is triggered after/before specified stage.", + "enum": [ + "bgp", + "linkdown", + "mlag", + "ratemon" + ], + "title": "Stage" + }, + "vrf": { + "type": "string", + "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", + "title": "VRF" + }, + "interface": { + "type": "string", + "description": "Trigger condition occurs on maintenance operation of specified interface.", + "title": "Interface" + }, + "unit": { + "type": "string", + "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", + "title": "Unit" + } + }, + "required": [ + "operation", + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Maintenance" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", + "deprecated": true, + "title": "Regex" + }, + "asynchronous": { + "type": "boolean", + "default": false, + "description": "Set the action to be non-blocking.\n", + "title": "Asynchronous" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Event Handlers" + }, + "event_monitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event Monitor" + }, + "flow_tracking": { + "type": "object", + "properties": { + "sampled": { + "type": "object", + "properties": { + "encapsulation": { + "type": "object", + "properties": { + "ipv4_ipv6": { + "type": "boolean", + "title": "IPv4 IPv6" + }, + "mpls": { + "type": "boolean", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "sample": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Sample" + }, + "hardware_offload": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Configure hardware offload for IPv4 traffic.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Configure hardware offload for IPv6 traffic.", + "title": "IPv6" + }, + "threshold_minimum": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "description": "Minimum number of samples.", + "title": "Threshold Minimum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Offload" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "table_size": { + "type": "integer", + "minimum": 1, + "maximum": 614400, + "description": "Maximum number of entries in flow table.\n", + "title": "Table Size" + }, + "record_export": { + "type": "object", + "properties": { + "mpls": { + "type": "boolean", + "description": "Export MPLS forwarding information.", + "title": "MPLS" + }, + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sampled" + }, + "hardware": { + "type": "object", + "properties": { + "record": { + "type": "object", + "properties": { + "format_ipfix_standard_timestamps_counters": { + "type": "boolean", + "description": "Enable software export of IPFIX data records.", + "title": "Format Ipfix Standard Timestamps Counters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "record_export": { + "type": "object", + "properties": { + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "flow_trackings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "sampled" + ], + "description": "Flow Tracking Type - only 'sampled' supported for now.", + "title": "Type" + }, + "sample": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Sample" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "record_export": { + "type": "object", + "properties": { + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + }, + "mpls": { + "type": "boolean", + "description": "Export MPLS forwarding information.", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + }, + "table_size": { + "type": "integer", + "minimum": 1, + "maximum": 614400, + "description": "Maximum number of entries in flow table.\n", + "title": "Table Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "type" + ] + }, + "title": "Flow Trackings" + }, + "generate_default_config": { + "type": "boolean", + "default": true, + "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter\n", + "title": "Generate Default Config" + }, + "generate_device_documentation": { + "type": "boolean", + "default": true, + "title": "Generate Device Documentation" + }, + "hardware": { + "type": "object", + "properties": { + "access_list": { + "type": "object", + "properties": { + "mechanism": { + "type": "string", + "enum": [ + "algomatch", + "none", + "tcam" + ], + "title": "Mechanism" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List" + }, + "speed_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "speed_group": { + "type": "string", + "title": "Speed Group" + }, + "serdes": { + "type": "string", + "description": "Serdes speed like \"10g\" or \"25g\".", + "title": "Serdes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "speed_group" + ] + }, + "title": "Speed Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware" + }, + "hardware_counters": { + "type": "object", + "properties": { + "features": { + "type": "array", + "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "acl", + "decap-group", + "directflow", + "ecn", + "flow-spec", + "gre tunnel interface", + "ip", + "mpls interface", + "mpls lfib", + "mpls tunnel", + "multicast", + "nexthop", + "pbr", + "pdp", + "policing interface", + "qos", + "qos dual-rate-policer", + "route", + "routed-port", + "segment-security", + "subinterface", + "tapagg", + "traffic-class", + "traffic-policy", + "vlan", + "vlan-interface", + "vni decap", + "vni encap", + "vtep decap", + "vtep encap" + ], + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "cpu" + ], + "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", + "title": "Direction" + }, + "address_type": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "mac" + ], + "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", + "title": "Address Type" + }, + "layer3": { + "type": "boolean", + "description": "Supported only for the 'ip' feature.\n", + "title": "Layer3" + }, + "vrf": { + "type": "string", + "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "VRF" + }, + "prefix": { + "type": "string", + "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "Prefix" + }, + "units_packets": { + "type": "boolean", + "title": "Units Packets" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Features" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Counters" + }, + "hostname": { + "type": "string", + "title": "Hostname" + }, + "interface_defaults": { + "type": "object", + "properties": { + "ethernet": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet" + }, + "mtu": { + "type": "integer", + "title": "MTU" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface Defaults" + }, + "interface_groups": { + "type": "array", + "title": "Maintenance Interface Groups", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface-Group name.", + "title": "Name" + }, + "interfaces": { + "type": "array", + "items": { + "type": "string", + "description": "Interface Name." + }, + "title": "Interfaces" + }, + "bgp_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Name of BGP Maintenance Profile." + }, + "title": "BGP Maintenance Profiles" + }, + "interface_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Name of Interface Maintenance Profile." + }, + "title": "Interface Maintenance Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + } + }, + "interface_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface-Profile Name.", + "title": "Name" + }, + "commands": { + "type": "array", + "items": { + "type": "string", + "description": "EOS CLI interface command.\nExample: \"switchport mode access\"\n" + }, + "title": "Commands" + } + }, + "required": [ + "commands", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Profiles" + }, + "ip_access_lists": { + "type": "array", + "title": "IP Extended Access-Lists (improved model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "entries": { + "type": "array", + "description": "ACL Entries.", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "ACL entry sequence number.", + "title": "Sequence" + }, + "remark": { + "type": "string", + "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", + "title": "Remark" + }, + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "description": "ACL action.\nRequired except for remarks.", + "title": "Action" + }, + "protocol": { + "type": "string", + "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", + "title": "Protocol" + }, + "source": { + "type": "string", + "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Source" + }, + "source_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Source Ports Match" + }, + "source_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP source port name or number." + }, + "title": "Source Ports" + }, + "destination": { + "type": "string", + "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Destination" + }, + "destination_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Destination Ports Match" + }, + "destination_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP destination port name or number." + }, + "title": "Destination Ports" + }, + "tcp_flags": { + "type": "array", + "items": { + "type": "string", + "description": "TCP Flag Name." + }, + "title": "TCP Flags" + }, + "fragments": { + "type": "boolean", + "description": "Match non-head fragment packets.", + "title": "Fragments" + }, + "log": { + "type": "boolean", + "description": "Log matches against this rule.", + "title": "Log" + }, + "ttl": { + "type": "integer", + "description": "TTL value.", + "minimum": 0, + "maximum": 255, + "title": "TTL" + }, + "ttl_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq" + ], + "default": "eq", + "title": "TTL Match" + }, + "icmp_type": { + "type": "string", + "description": "Message type name/number for ICMP packets.", + "title": "ICMP Type" + }, + "icmp_code": { + "type": "string", + "description": "Message code for ICMP packets.", + "title": "ICMP Code" + }, + "nexthop_group": { + "type": "string", + "description": "nexthop-group name.", + "title": "Nexthop Group" + }, + "tracked": { + "type": "boolean", + "description": "Match packets in existing ICMP/UDP/TCP connections.", + "title": "Tracked" + }, + "dscp": { + "type": "string", + "description": "DSCP value or name.", + "title": "DSCP" + }, + "vlan_number": { + "type": "integer", + "title": "VLAN Number" + }, + "vlan_inner": { + "type": "boolean", + "default": false, + "title": "VLAN Inner" + }, + "vlan_mask": { + "type": "string", + "description": "0x000-0xFFF VLAN mask.", + "title": "VLAN Mask" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + } + }, + "ip_access_lists_max_entries": { + "type": "integer", + "description": "Limit ACL entries defined under the `ip_access_lists`.", + "title": "IP Access Lists Max Entries" + }, + "ip_community_lists": { + "type": "array", + "title": "IP Community Lists", + "description": "Communities and regexp entries MUST not be configured in the same community-list.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IP Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Action" + }, + "communities": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If defined, a standard community-list will be configured.\nSupported community strings (case insensitive):\n- GSHUT\n- internet\n- local-as\n- no-advertise\n- no-export\n- <1-4294967040>\n- aa:nn\n", + "title": "Communities" + }, + "regexp": { + "type": "string", + "description": "Regular Expression.\nIf defined, a regex community-list will be configured.\n", + "title": "RegExp" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_dhcp_relay": { + "type": "object", + "properties": { + "always_on": { + "type": "boolean", + "description": "DhcpRelay Agent will be in always-on mode.", + "title": "Always On" + }, + "all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "All Subnets" + }, + "information_option": { + "type": "boolean", + "description": "Insert Option-82 information.", + "title": "Information Option" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP DHCP Relay" + }, + "ip_dhcp_snooping": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "bridging": { + "type": "boolean", + "title": "Bridging" + }, + "information_option": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable insertion of option-82 in DHCP request packets.", + "title": "Enabled" + }, + "circuit_id_type": { + "type": "string", + "description": "\"none\" or <0 - 255>.", + "title": "Circuit ID Type" + }, + "circuit_id_format": { + "type": "string", + "description": "Required if `circuit_id_type` is set.\n- \"%h:%p\" Hostname and interface name\n- \"%p:%v\" Interface name and VLAN ID", + "enum": [ + "%h:%p", + "%p:%v" + ], + "title": "Circuit ID Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Information Option" + }, + "vlan": { + "type": "string", + "description": "VLAN range as string.\n\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18", + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP DHCP Snooping" + }, + "ip_domain_lookup": { + "type": "object", + "properties": { + "source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Source Interface.\n", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Source Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Domain Lookup" + }, + "ip_extcommunity_lists": { + "type": "array", + "title": "IP Extended Community Lists", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "extcommunities": { + "type": "string", + "description": "Communities as string.\nExample: \"65000:65000\"\n", + "title": "Extcommunities" + } + }, + "required": [ + "type", + "extcommunities" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_extcommunity_lists_regexp": { + "type": "array", + "title": "IP Extended Community Lists RegExp", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "regexp": { + "type": "string", + "description": "Regular Expression.", + "title": "RegExp" + } + }, + "required": [ + "type", + "regexp" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_ftp_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Ftp Client Source Interfaces" + }, + "ip_hardware": { + "type": "object", + "properties": { + "fib": { + "type": "object", + "properties": { + "optimize": { + "type": "object", + "properties": { + "prefixes": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "enum": [ + "internet", + "urpf-internet" + ], + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Optimize" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fib" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Hardware" + }, + "ip_http_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Interface Name.", + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP HTTP Client Source Interfaces" + }, + "ip_icmp_redirect": { + "type": "boolean", + "title": "IP ICMP Redirect" + }, + "ip_igmp_snooping": { + "type": "object", + "properties": { + "globally_enabled": { + "type": "boolean", + "default": true, + "description": "Activate or deactivate IGMP snooping for all vlans where `vlans` allows user to activate / deactivate IGMP snooping per vlan.", + "title": "Globally Enabled" + }, + "robustness_variable": { + "type": "integer", + "title": "Robustness Variable" + }, + "restart_query_interval": { + "type": "integer", + "title": "Restart Query Interval" + }, + "interface_restart_query": { + "type": "integer", + "title": "Interface Restart Query" + }, + "fast_leave": { + "type": "boolean", + "title": "Fast Leave" + }, + "querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "address": { + "type": "string", + "description": "IP Address.", + "title": "Address" + }, + "query_interval": { + "type": "integer", + "title": "Query Interval" + }, + "max_response_time": { + "type": "integer", + "title": "Max Response Time" + }, + "last_member_query_interval": { + "type": "integer", + "title": "Last Member Query Interval" + }, + "last_member_query_count": { + "type": "integer", + "title": "Last Member Query Count" + }, + "startup_query_interval": { + "type": "integer", + "title": "Startup Query Interval" + }, + "startup_query_count": { + "type": "integer", + "title": "Startup Query Count" + }, + "version": { + "type": "integer", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Querier" + }, + "proxy": { + "type": "boolean", + "title": "Proxy" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "address": { + "type": "string", + "description": "IP Address.", + "title": "Address" + }, + "query_interval": { + "type": "integer", + "title": "Query Interval" + }, + "max_response_time": { + "type": "integer", + "title": "Max Response Time" + }, + "last_member_query_interval": { + "type": "integer", + "title": "Last Member Query Interval" + }, + "last_member_query_count": { + "type": "integer", + "title": "Last Member Query Count" + }, + "startup_query_interval": { + "type": "integer", + "title": "Startup Query Interval" + }, + "startup_query_count": { + "type": "integer", + "title": "Startup Query Count" + }, + "version": { + "type": "integer", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Querier" + }, + "max_groups": { + "type": "integer", + "title": "Max Groups" + }, + "fast_leave": { + "type": "boolean", + "title": "Fast Leave" + }, + "proxy": { + "type": "boolean", + "description": "Global proxy settings should be enabled before enabling per-vlan.\n", + "title": "Proxy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Snooping" + }, + "ip_name_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "description": "IPv4 or IPv6 address for DNS server.", + "title": "IP Address" + }, + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + }, + "priority": { + "description": "Priority value (lower is first).", + "type": "integer", + "minimum": 0, + "maximum": 4, + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Name Servers" + }, + "ip_nat": { + "type": "object", + "properties": { + "kernel_buffer_size": { + "type": "integer", + "minimum": 1, + "maximum": 64, + "description": "Buffer size in MB.", + "title": "Kernel Buffer Size" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "Specify VRF for NAT profile.", + "title": "VRF" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "pools": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "ip-port", + "port-only" + ], + "default": "ip-port", + "title": "Type" + }, + "prefix_length": { + "type": "integer", + "minimum": 16, + "maximum": 32, + "description": "It is only used and required when `type` is `ip-port`.", + "title": "Prefix Length" + }, + "ranges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "first_ip": { + "type": "string", + "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.", + "title": "First IP" + }, + "last_ip": { + "type": "string", + "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.\n`first_ip` and `last_ip` ip addresses should lie in same subnet.", + "title": "Last IP" + }, + "first_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "First Port" + }, + "last_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Required when `first_port` is set.\n`last_port` must be greater than or equal to `first_port`.", + "title": "Last Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Ranges" + }, + "utilization_log_threshold": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "title": "Utilization Log Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Pools" + }, + "synchronization": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "Description" + }, + "expiry_interval": { + "type": "integer", + "minimum": 60, + "maximum": 3600, + "description": "In seconds.", + "title": "Expiry Interval" + }, + "local_interface": { + "type": "string", + "description": "EOS interface name.", + "title": "Local Interface" + }, + "peer_address": { + "type": "string", + "description": "IPv4 address.", + "title": "Peer Address" + }, + "port_range": { + "type": "object", + "properties": { + "first_port": { + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "title": "First Port" + }, + "last_port": { + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "description": ">= first_port.", + "title": "Last Port" + }, + "split_disabled": { + "type": "boolean", + "title": "Split Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Range" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Synchronization" + }, + "translation": { + "type": "object", + "properties": { + "address_selection": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "hash_field_source_ip": { + "type": "boolean", + "title": "Hash Field Source IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Selection" + }, + "counters": { + "type": "boolean", + "title": "Counters" + }, + "low_mark": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "minimum": 1, + "maximum": 99, + "description": "Used to render 'ip nat translation low-mark '.", + "title": "Percentage" + }, + "host_percentage": { + "type": "integer", + "minimum": 1, + "maximum": 99, + "description": "Used to render 'ip nat translation low-mark host'.", + "title": "Host Percentage" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Low Mark" + }, + "max_entries": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Limit" + }, + "host_limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Host Limit" + }, + "ip_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "IPv4 address.", + "title": "IP" + }, + "limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Limit" + } + }, + "required": [ + "limit", + "ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Limits" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Max Entries" + }, + "timeouts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "title": "Protocol" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "In seconds.", + "title": "Timeout" + } + }, + "required": [ + "timeout", + "protocol" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Timeouts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Translation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ip_radius_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Radius Source Interfaces" + }, + "ip_routing": { + "type": "boolean", + "title": "IP Routing" + }, + "ip_routing_ipv6_interfaces": { + "type": "boolean", + "title": "IP Routing IPv6 Interfaces" + }, + "ip_security": { + "type": "object", + "properties": { + "ike_policies": { + "type": "array", + "description": "Internet Security Association and Key Mgmt Protocol.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "local_id": { + "type": "string", + "description": "Local IKE identification.\nCan be an IPv4 or an IPv6 address.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", + "title": "Local ID" + }, + "local_id_fqdn": { + "type": "string", + "description": "Local FQDN or UFQDN IKE identification.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", + "title": "Local ID Fqdn" + }, + "ike_lifetime": { + "type": "integer", + "minimum": 1, + "maximum": 24, + "description": "IKE lifetime in hours.", + "title": "Ike Lifetime" + }, + "encryption": { + "type": "string", + "enum": [ + "3des", + "aes128", + "aes256" + ], + "description": "IKE encryption algorithm.", + "title": "Encryption" + }, + "dh_group": { + "type": "integer", + "enum": [ + 1, + 2, + 5, + 14, + 15, + 16, + 17, + 20, + 21, + 24 + ], + "description": "Diffie-Hellman group for the key exchange.", + "title": "Dh Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ike Policies" + }, + "sa_policies": { + "type": "array", + "description": "Security Association policies.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the SA policy. The \"null\" value is deprecated and will be removed in AVD 5.0.0.", + "title": "Name" + }, + "sa_lifetime": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Lifetime value for this SA.\nValid range depends on the unit.\n<1-24> Lifetime in hours ( default )\n<1-4000000> Packet limit in thousands\n<1-6000> Byte limit in GB ( 1024 MB )\n<1-6144000> Byte limit in MB ( 1024 KB )", + "title": "Value" + }, + "unit": { + "type": "string", + "enum": [ + "gigabytes", + "hours", + "megabytes", + "thousand-packets" + ], + "default": "hours", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Lifetime" + }, + "esp": { + "type": "object", + "properties": { + "integrity": { + "type": "string", + "enum": [ + "disabled", + "sha1", + "sha256", + "null" + ], + "title": "Integrity" + }, + "encryption": { + "type": "string", + "enum": [ + "disabled", + "aes128", + "aes128gcm128", + "aes128gcm64", + "aes256", + "aes256gcm128", + "null" + ], + "title": "Encryption" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Esp" + }, + "pfs_dh_group": { + "type": "integer", + "enum": [ + 1, + 2, + 5, + 14, + 15, + 16, + 17, + 20, + 21, + 24 + ], + "title": "Pfs Dh Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Sa Policies" + }, + "profiles": { + "type": "array", + "description": "IPSec profiles.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the IPsec profile.", + "title": "Name" + }, + "ike_policy": { + "type": "string", + "description": "Name of the IKE policy to use in this profile.", + "title": "Ike Policy" + }, + "sa_policy": { + "type": "string", + "description": "Name of the Security Association to use in this profile.", + "title": "Sa Policy" + }, + "connection": { + "type": "string", + "description": "IPsec connection (Initiator/Responder/Dynamic).", + "enum": [ + "add", + "start", + "route" + ], + "title": "Connection" + }, + "shared_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Shared Key" + }, + "dpd": { + "type": "object", + "description": "Dead Peer Detection.", + "properties": { + "interval": { + "type": "integer", + "description": "Interval (in seconds) between keep-alive messages.", + "minimum": 2, + "maximum": 3600, + "title": "Interval" + }, + "time": { + "type": "integer", + "description": "Time (in seconds) after which the action is applied.", + "minimum": 10, + "maximum": 3600, + "title": "Time" + }, + "action": { + "type": "string", + "description": "Action to apply.\n\n* 'clear': Delete all connections\n* 'hold': Re-negotiate connection on demand\n* 'restart': Restart connection immediately\n", + "enum": [ + "clear", + "hold", + "restart" + ], + "title": "Action" + } + }, + "required": [ + "interval", + "time", + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dpd" + }, + "mode": { + "type": "string", + "description": "Ipsec mode type.", + "enum": [ + "transport", + "tunnel" + ], + "title": "Mode" + }, + "flow_parallelization_encapsulation_udp": { + "type": "boolean", + "description": "Enable flow parallelization.\nWhen enabled, multiple cores are used to parallelize the IPsec encryption and decryption processing.", + "title": "Flow Parallelization Encapsulation UDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "key_controller": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "IPsec profile name to use.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Key Controller" + }, + "hardware_encryption_disabled": { + "type": "boolean", + "default": false, + "description": "Disable hardware encryption.\nAn SFE restart is needed for this change to take effect.", + "title": "Hardware Encryption Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Security" + }, + "ip_ssh_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Interface Name.", + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "default": "default", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP SSH Client Source Interfaces" + }, + "ip_tacacs_source_interfaces": { + "type": "array", + "title": "IP Tacacs Source Interfaces", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_telnet_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Telnet Client Source Interfaces" + }, + "ip_tftp_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Tftp Client Source Interfaces" + }, + "ip_virtual_router_mac_address": { + "type": "string", + "description": "MAC address (hh:hh:hh:hh:hh:hh).", + "title": "IP Virtual Router MAC Address" + }, + "ipv6_access_lists": { + "type": "array", + "title": "IPv6 Extended Access-Lists", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ipv6_dhcp_relay": { + "type": "object", + "properties": { + "always_on": { + "type": "boolean", + "description": "DhcpRelay Agent will be in always-on mode, off by default.", + "title": "Always On" + }, + "all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "All Subnets" + }, + "option": { + "type": "object", + "description": "Insert DHCP Option.", + "properties": { + "link_layer_address": { + "type": "boolean", + "description": "Add Option 79 (Link Layer Address Option).", + "title": "Link Layer Address" + }, + "remote_id_format": { + "type": "string", + "enum": [ + "%m:%i", + "%m:%p" + ], + "description": "Add RemoteID option 37 in format MAC address and interface ID (`%m:%i`) or MAC address and interface name (`%m:%p`).", + "title": "Remote ID Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Option" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 DHCP Relay" + }, + "ipv6_hardware": { + "type": "object", + "properties": { + "fib": { + "type": "object", + "properties": { + "optimize": { + "type": "object", + "properties": { + "prefixes": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Pre-defined profile 'internet' or user-defined profile name.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Optimize" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fib" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Hardware" + }, + "ipv6_icmp_redirect": { + "type": "boolean", + "title": "IPv6 ICMP Redirect" + }, + "ipv6_neighbor": { + "type": "object", + "properties": { + "static_entries": { + "type": "array", + "description": "Static IPv6 neighbor entries.", + "items": { + "type": "object", + "properties": { + "ipv6_address": { + "type": "string", + "description": "IPv6 address of neighbor.", + "title": "IPv6 Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "interface": { + "type": "string", + "description": "Interface name.", + "title": "Interface" + }, + "mac_address": { + "type": "string", + "description": "MAC address of neighbor like 'aa:af:12:34:bc:bf'", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", + "title": "MAC Address" + } + }, + "required": [ + "ipv6_address", + "interface", + "mac_address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Entries" + }, + "persistent": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Restore the IPv6 neighbor cache after reboot.", + "title": "Enabled" + }, + "refresh_delay": { + "type": "integer", + "description": "Time to wait in seconds before refreshing the IPv6 neighbor cache after reboot (EOS default 600).\nIt will require setting the `enabled` key to true.\n", + "minimum": 600, + "maximum": 3600, + "title": "Refresh Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Persistent" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Neighbor" + }, + "ipv6_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Prefix Lists" + }, + "ipv6_standard_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Standard Access Lists" + }, + "ipv6_static_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "title": "VRF" + }, + "destination_address_prefix": { + "type": "string", + "description": "IPv6 Network/Mask.", + "title": "Destination Address Prefix" + }, + "interface": { + "type": "string", + "title": "Interface" + }, + "gateway": { + "type": "string", + "description": "IPv6 Address.", + "title": "Gateway" + }, + "track_bfd": { + "type": "boolean", + "description": "Track next-hop using BFD.", + "title": "Track BFD" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + }, + "tag": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Tag" + }, + "name": { + "type": "string", + "description": "Description.", + "title": "Name" + }, + "metric": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Static Routes" + }, + "ipv6_unicast_routing": { + "type": "boolean", + "title": "IPv6 Unicast Routing" + }, + "is_deployed": { + "description": "Key only used for documentation or validation purposes.", + "type": "boolean", + "default": true, + "title": "Is Deployed" + }, + "l2_protocol": { + "type": "object", + "properties": { + "forwarding_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "bfd per-link rfc-7130", + "e-lmi", + "isis", + "lacp", + "lldp", + "macsec", + "pause", + "stp" + ], + "title": "Name" + }, + "forward": { + "type": "boolean", + "title": "Forward" + }, + "tagged_forward": { + "type": "boolean", + "title": "Tagged Forward" + }, + "untagged_forward": { + "type": "boolean", + "title": "Untagged Forward" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Forwarding Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "lacp": { + "type": "object", + "description": "Set Link Aggregation Control Protocol (LACP) parameters.", + "properties": { + "port_id": { + "type": "object", + "description": "LACP port-ID range configuration.", + "properties": { + "range": { + "type": "object", + "properties": { + "begin": { + "type": "integer", + "description": "Minimum LACP port-ID range.", + "title": "Begin" + }, + "end": { + "type": "integer", + "description": "Maximum LACP port-ID range.", + "title": "End" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Range" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port ID" + }, + "rate_limit": { + "type": "object", + "description": "Set LACPDU rate limit options.", + "properties": { + "default": { + "type": "boolean", + "description": "Enable LACPDU rate limiting by default on all ports.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rate Limit" + }, + "system_priority": { + "type": "integer", + "description": "Set local system LACP priority.", + "minimum": 0, + "maximum": 65535, + "title": "System Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "links_minimum": { + "type": "integer", + "minimum": 1, + "maximum": 100000, + "title": "Links Minimum" + }, + "recovery_delay": { + "type": "integer", + "minimum": 0, + "maximum": 3600, + "title": "Recovery Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "lldp": { + "type": "object", + "properties": { + "timer": { + "type": "integer", + "title": "Timer" + }, + "timer_reinitialization": { + "type": "string", + "title": "Timer Reinitialization" + }, + "holdtime": { + "type": "integer", + "title": "Holdtime" + }, + "management_address": { + "type": "string", + "title": "Management Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "receive_packet_tagged_drop": { + "type": "string", + "title": "Receive Packet Tagged Drop" + }, + "tlvs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "link-aggregation", + "management-address", + "max-frame-size", + "med", + "port-description", + "port-vlan", + "power-via-mdi", + "system-capabilities", + "system-description", + "system-name", + "vlan-name" + ], + "title": "Name" + }, + "transmit": { + "type": "boolean", + "title": "Transmit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "TLVs" + }, + "run": { + "type": "boolean", + "title": "Run" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "load_interval": { + "type": "object", + "properties": { + "default": { + "type": "integer", + "description": "Default load interval in seconds.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Load Interval" + }, + "local_users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Username.", + "type": "string", + "title": "Name" + }, + "disabled": { + "type": "boolean", + "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", + "title": "Disabled" + }, + "privilege": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Initial privilege level with local EXEC authorization.\n", + "title": "Privilege" + }, + "role": { + "type": "string", + "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", + "title": "Role" + }, + "sha512_password": { + "type": "string", + "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", + "title": "SHA512 Password" + }, + "no_password": { + "type": "boolean", + "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", + "title": "No Password" + }, + "ssh_key": { + "type": "string", + "title": "SSH Key" + }, + "secondary_ssh_key": { + "type": "string", + "title": "Secondary SSH Key" + }, + "shell": { + "type": "string", + "description": "Specify shell for the user.\n", + "enum": [ + "/bin/bash", + "/bin/sh", + "/sbin/nologin" + ], + "title": "Shell" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Users" + }, + "logging": { + "type": "object", + "properties": { + "console": { + "type": "string", + "enum": [ + "debugging", + "informational", + "notifications", + "warnings", + "errors", + "critical", + "alerts", + "emergencies", + "disabled" + ], + "description": "Console logging severity level.\n", + "title": "Console" + }, + "monitor": { + "type": "string", + "enum": [ + "debugging", + "informational", + "notifications", + "warnings", + "errors", + "critical", + "alerts", + "emergencies", + "disabled" + ], + "description": "Monitor logging severity level.\n", + "title": "Monitor" + }, + "buffered": { + "type": "object", + "properties": { + "size": { + "type": "integer", + "minimum": 10, + "maximum": 2147483647, + "title": "Size" + }, + "level": { + "type": "string", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "disabled" + ], + "description": "Buffer logging severity level.\n", + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Buffered" + }, + "trap": { + "type": "string", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "system", + "warnings", + "disabled" + ], + "description": "Trap logging severity level.\n", + "title": "Trap" + }, + "synchronous": { + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": [ + "alerts", + "all", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "disabled" + ], + "description": "Synchronous logging severity level.\n", + "default": "critical", + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Synchronous" + }, + "format": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "enum": [ + "high-resolution", + "traditional", + "traditional timezone", + "traditional year", + "traditional timezone year", + "traditional year timezone" + ], + "description": "Timestamp format.", + "title": "Timestamp" + }, + "hostname": { + "type": "string", + "enum": [ + "fqdn", + "ipv4" + ], + "description": "Hostname format in syslogs. For hostname _only_, remove the line. (default EOS CLI behaviour).", + "title": "Hostname" + }, + "sequence_numbers": { + "type": "boolean", + "description": "Add sequence numbers to log messages.\n", + "title": "Sequence Numbers" + }, + "rfc5424": { + "type": "boolean", + "description": "Forward logs in RFC5424 format.\n", + "title": "Rfc5424" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "facility": { + "type": "string", + "enum": [ + "auth", + "cron", + "daemon", + "kern", + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7", + "lpr", + "mail", + "news", + "sys9", + "sys10", + "sys11", + "sys12", + "sys13", + "sys14", + "syslog", + "user", + "uucp" + ], + "title": "Facility" + }, + "source_interface": { + "type": "string", + "description": "Source Interface Name.", + "title": "Source Interface" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Syslog server name.", + "title": "Name" + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "udp", + "title": "Protocol" + }, + "ports": { + "type": "array", + "items": { + "type": "integer" + }, + "title": "Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "policy": { + "type": "object", + "properties": { + "match": { + "type": "object", + "properties": { + "match_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Match list.", + "title": "Name" + }, + "action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Match Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Match" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy" + }, + "event": { + "type": "object", + "properties": { + "storm_control": { + "type": "object", + "properties": { + "discards": { + "type": "object", + "properties": { + "global": { + "type": "boolean", + "title": "Global" + }, + "interval": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "description": "Logging interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + }, + "level": { + "type": "array", + "description": "Configure logging severity.", + "items": { + "type": "object", + "properties": { + "facility": { + "type": "string", + "title": "Facility" + }, + "severity": { + "type": "string", + "description": "Severity of facility. Below are the supported severites.\nemergencies System is unusable (severity=0)\nalerts Immediate action needed (severity=1)\ncritical Critical conditions (severity=2)\nerrors Error conditions (severity=3)\nwarnings Warning conditions (severity=4)\nnotifications Normal but significant conditions (severity=5)\ninformational Informational messages (severity=6)\ndebugging Debugging messages (severity=7)\n<0-7> Severity level value", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "title": "Severity" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "facility" + ] + }, + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "loopback_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Loopback interface name e.g. \"Loopback0\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "mpls": { + "type": "object", + "properties": { + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "node_segment": { + "type": "object", + "properties": { + "ipv4_index": { + "type": "integer", + "title": "IPv4 Index" + }, + "ipv6_index": { + "type": "integer", + "title": "IPv6 Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Node Segment" + }, + "eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the loopback interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Loopback Interfaces" + }, + "mac_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "MAC Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "title": "Sequence" + }, + "action": { + "type": "string", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "MAC Access Lists" + }, + "mac_address_table": { + "type": "object", + "properties": { + "aging_time": { + "type": "integer", + "description": "Aging time in seconds.", + "title": "Aging Time" + }, + "notification_host_flap": { + "type": "object", + "properties": { + "logging": { + "type": "boolean", + "title": "Logging" + }, + "detection": { + "type": "object", + "properties": { + "window": { + "type": "integer", + "minimum": 2, + "maximum": 300, + "title": "Window" + }, + "moves": { + "type": "integer", + "minimum": 2, + "maximum": 10, + "title": "Moves" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Detection" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Notification Host Flap" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Table" + }, + "mac_security": { + "type": "object", + "title": "MAC Security (MACsec)", + "properties": { + "license": { + "type": "object", + "properties": { + "license_name": { + "type": "string", + "title": "License Name" + }, + "license_key": { + "type": "string", + "title": "License Key" + } + }, + "required": [ + "license_name", + "license_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "License" + }, + "fips_restrictions": { + "type": "boolean", + "title": "Fips Restrictions" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile-Name.", + "title": "Name" + }, + "cipher": { + "type": "string", + "enum": [ + "aes128-gcm", + "aes128-gcm-xpn", + "aes256-gcm", + "aes256-gcm-xpn" + ], + "title": "Cipher" + }, + "connection_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "encrypted_key": { + "type": "string", + "title": "Encrypted Key" + }, + "fallback": { + "type": "boolean", + "title": "Fallback" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Connection Keys" + }, + "mka": { + "type": "object", + "properties": { + "key_server_priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Key Server Priority" + }, + "session": { + "type": "object", + "properties": { + "rekey_period": { + "type": "integer", + "minimum": 30, + "maximum": 100000, + "description": "Rekey period in seconds.", + "title": "Rekey Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Session" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MKA" + }, + "sci": { + "type": "boolean", + "title": "SCI" + }, + "l2_protocols": { + "type": "object", + "properties": { + "ethernet_flow_control": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "encrypt", + "bypass" + ], + "title": "Mode" + } + }, + "required": [ + "mode" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Flow Control" + }, + "lldp": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "bypass", + "bypass unauthorized" + ], + "title": "Mode" + } + }, + "required": [ + "mode" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocols" + }, + "traffic_unprotected": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "Allow/drop the transmit/receive of unprotected traffic.", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_active_sak": { + "type": "boolean", + "description": "Allow transmit/receive of encrypted traffic using operational SAK and block otherwise.", + "title": "Allow Active Sak" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Unprotected" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "maintenance": { + "type": "object", + "title": "Maintenance Mode", + "properties": { + "default_interface_profile": { + "type": "string", + "description": "Name of default Interface Profile.\n", + "title": "Default Interface Profile" + }, + "default_bgp_profile": { + "type": "string", + "description": "Name of default BGP Profile.\n", + "title": "Default BGP Profile" + }, + "default_unit_profile": { + "type": "string", + "description": "Name of default Unit Profile.\n", + "title": "Default Unit Profile" + }, + "interface_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "rate_monitoring": { + "type": "object", + "properties": { + "load_interval": { + "type": "integer", + "description": "Load Interval in Seconds.\n", + "title": "Load Interval" + }, + "threshold": { + "type": "integer", + "description": "Threshold in kbps.\n", + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rate Monitoring" + }, + "shutdown": { + "type": "object", + "properties": { + "max_delay": { + "type": "integer", + "description": "Max delay in seconds.\n", + "title": "Max Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Interface Profiles" + }, + "bgp_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "BGP Profile Name.", + "title": "Name" + }, + "initiator": { + "type": "object", + "properties": { + "route_map_inout": { + "type": "string", + "description": "Route Map.", + "title": "Route Map Inout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Initiator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "BGP Profiles" + }, + "unit_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unit Profile Name.", + "title": "Name" + }, + "on_boot": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "minimum": 300, + "maximum": 3600, + "description": "On-boot in seconds.\n", + "title": "Duration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "On Boot" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Unit Profiles" + }, + "units": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unit Name.", + "title": "Name" + }, + "quiesce": { + "type": "boolean", + "title": "Quiesce" + }, + "profile": { + "type": "string", + "description": "Name of Unit Profile.\n", + "title": "Profile" + }, + "groups": { + "type": "object", + "properties": { + "bgp_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Name of BGP Group.\n" + }, + "title": "BGP Groups" + }, + "interface_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Name of Interface Group.\n" + }, + "title": "Interface Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Units" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "management_accounts": { + "type": "object", + "properties": { + "password": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Password" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Accounts" + }, + "management_api_gnmi": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "default": "eos-native", + "title": "Provider" + }, + "transport": { + "type": "object", + "properties": { + "grpc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Transport name.", + "title": "Name" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "vrf": { + "type": "string", + "description": "VRF name is optional.", + "title": "VRF" + }, + "notification_timestamp": { + "type": "string", + "enum": [ + "send-time", + "last-change-time" + ], + "description": "Per the gNMI specification, the default timestamp field of a notification message is set to be\nthe time at which the value of the underlying data source changes or when the reported event takes place.\nIn order to facilitate integration in legacy environments oriented around polling style operations,\nan option to support overriding the timestamp field to the send-time is available from EOS 4.27.0F.\n", + "title": "Notification Timestamp" + }, + "ip_access_group": { + "type": "string", + "description": "ACL name.", + "title": "IP Access Group" + }, + "port": { + "type": "integer", + "description": "GNMI port.\nMake sure to update the control-plane ACL accordingly in order for the service to be reachable by external applications.\n", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Grpc" + }, + "grpc_tunnels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Transport name.", + "title": "Name" + }, + "shutdown": { + "type": "boolean", + "description": "Operational status of the gRPC tunnel.", + "title": "Shutdown" + }, + "tunnel_ssl_profile": { + "type": "string", + "description": "Tunnel SSL profile name.", + "title": "Tunnel SSL Profile" + }, + "gnmi_ssl_profile": { + "type": "string", + "description": "gNMI SSL profile name.", + "title": "gNMI SSL Profile" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "destination": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "IP address or hostname.", + "title": "Address" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + } + }, + "required": [ + "name", + "port" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "target": { + "type": "object", + "properties": { + "use_serial_number": { + "type": "boolean", + "description": "Use serial number as the Target ID.", + "title": "Use Serial Number" + }, + "target_ids": { + "type": "array", + "description": "Target IDs as a list.\n", + "items": { + "type": "string" + }, + "title": "Target IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Grpc Tunnels" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transport" + }, + "enable_vrfs": { + "type": "array", + "description": "These should not be mixed with the new keys above.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use transport.grpc instead.", + "deprecated": true, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "access_group": { + "type": "string", + "description": "Standard IPv4 ACL name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Enable VRFs" + }, + "octa": { + "type": "object", + "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", + "deprecated": true, + "title": "Octa" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API gNMI" + }, + "management_api_http": { + "type": "object", + "properties": { + "enable_http": { + "type": "boolean", + "title": "Enable HTTP" + }, + "enable_https": { + "type": "boolean", + "title": "Enable Https" + }, + "https_ssl_profile": { + "description": "SSL Profile Name.", + "type": "string", + "title": "Https SSL Profile" + }, + "default_services": { + "type": "boolean", + "description": "Enable default services: capi-doc and tapagg.", + "title": "Default Services" + }, + "enable_vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "VRF Name.", + "type": "string", + "title": "Name" + }, + "access_group": { + "description": "Standard IPv4 ACL name.", + "type": "string", + "title": "Access Group" + }, + "ipv6_access_group": { + "description": "Standard IPv6 ACL name.", + "type": "string", + "title": "IPv6 Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Enable VRFs" + }, + "protocol_https_certificate": { + "type": "object", + "properties": { + "certificate": { + "type": "string", + "description": "Name of certificate; private key must also be specified.", + "title": "Certificate" + }, + "private_key": { + "type": "string", + "description": "Name of private key; certificate must also be specified.", + "title": "Private Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Protocol Https Certificate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API HTTP" + }, + "management_api_models": { + "type": "object", + "properties": { + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "sysdb", + "smash" + ], + "title": "Name" + }, + "paths": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Path" + }, + "disabled": { + "type": "boolean", + "default": false, + "title": "Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Providers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API Models" + }, + "management_console": { + "type": "object", + "properties": { + "idle_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "title": "Idle Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Console" + }, + "management_cvx": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "server_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP or hostname." + }, + "title": "Server Hosts" + }, + "source_interface": { + "type": "string", + "description": "Interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management CVX" + }, + "management_defaults": { + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "title": "Hash" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Defaults" + }, + "management_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Management Interface Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "type": { + "type": "string", + "enum": [ + "oob", + "inband" + ], + "default": "oob", + "description": "For documentation purposes only.", + "title": "Type" + }, + "gateway": { + "type": "string", + "description": "IPv4 address of default gateway in management VRF.", + "title": "Gateway" + }, + "ipv6_gateway": { + "type": "string", + "description": "IPv6 address of default gateway in management VRF.", + "title": "IPv6 Gateway" + }, + "mac_address": { + "type": "string", + "description": "MAC address.", + "title": "MAC Address" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the management interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Management Interfaces" + }, + "management_security": { + "type": "object", + "properties": { + "entropy_source": { + "type": "string", + "title": "Entropy Source" + }, + "entropy_sources": { + "type": "object", + "description": "Source of entropy.", + "properties": { + "hardware": { + "type": "boolean", + "description": "Use a hardware based source.", + "title": "Hardware" + }, + "haveged": { + "type": "boolean", + "description": "Use the HAVEGE algorithm.", + "title": "Haveged" + }, + "cpu_jitter": { + "type": "boolean", + "description": "Use the Jitter RNG algorithm of a CPU based source.", + "title": "CPU Jitter" + }, + "hardware_exclusive": { + "type": "boolean", + "description": "Only use entropy from the hardware source.", + "title": "Hardware Exclusive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Entropy Sources" + }, + "password": { + "type": "object", + "properties": { + "minimum_length": { + "type": "integer", + "minimum": 1, + "maximum": 32, + "title": "Minimum Length" + }, + "encryption_key_common": { + "type": "boolean", + "title": "Encryption Key Common" + }, + "encryption_reversible": { + "type": "string", + "title": "Encryption Reversible" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "minimum": { + "type": "object", + "properties": { + "digits": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Digits" + }, + "length": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Length" + }, + "lower": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Lower" + }, + "special": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Special" + }, + "upper": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Upper" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Minimum" + }, + "maximum": { + "type": "object", + "properties": { + "repetitive": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Repetitive" + }, + "sequential": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Sequential" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Password" + }, + "ssl_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "tls_versions": { + "type": "string", + "description": "List of allowed TLS versions as string.\nExamples:\n - \"1.0\"\n - \"1.0 1.1\"\n", + "title": "TLS Versions" + }, + "cipher_list": { + "type": "string", + "description": "cipher_list syntax follows the openssl cipher strings format.\nColon (:) separated list of allowed ciphers as a string.\n", + "title": "Cipher List" + }, + "trust_certificate": { + "type": "object", + "properties": { + "certificates": { + "type": "array", + "description": "List of trust certificate names.\nExamples:\n - test1.crt\n - test2.crt\n", + "items": { + "type": "string" + }, + "title": "Certificates" + }, + "requirement": { + "type": "object", + "properties": { + "basic_constraint_ca": { + "type": "boolean", + "title": "Basic Constraint Ca" + }, + "hostname_fqdn": { + "type": "boolean", + "description": "Enforce hostname to be FQDN without wildcard.\n", + "title": "Hostname Fqdn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Requirement" + }, + "policy_expiry_date_ignore": { + "type": "boolean", + "title": "Policy Expiry Date Ignore" + }, + "system": { + "type": "boolean", + "description": "Use system-supplied trust certificates.\n", + "title": "System" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trust Certificate" + }, + "chain_certificate": { + "type": "object", + "properties": { + "certificates": { + "type": "array", + "description": "List of chain certificate names.\nExamples:\n - chain1.crt\n - chain2.crt\n", + "items": { + "type": "string" + }, + "title": "Certificates" + }, + "requirement": { + "type": "object", + "properties": { + "basic_constraint_ca": { + "type": "boolean", + "title": "Basic Constraint Ca" + }, + "include_root_ca": { + "type": "boolean", + "title": "Include Root Ca" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Requirement" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Chain Certificate" + }, + "certificate": { + "type": "object", + "properties": { + "file": { + "type": "string", + "title": "File" + }, + "key": { + "type": "string", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Certificate" + }, + "certificate_revocation_lists": { + "type": "array", + "description": "List of CRLs (Certificate Revocation List).\nIf specified, one CRL needs to be provided for every certificate in the chain, even if the revocation list in the CRL is empty.\n", + "items": { + "type": "string" + }, + "title": "Certificate Revocation Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "SSL Profiles" + }, + "shared_secret_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "secrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "secret": { + "type": "string", + "title": "Secret" + }, + "secret_type": { + "type": "string", + "default": "7", + "enum": [ + "0", + "7", + "8a" + ], + "title": "Secret Type" + }, + "receive_lifetime": { + "type": "object", + "properties": { + "infinite": { + "type": "boolean", + "title": "Infinite" + }, + "start_date_time": { + "type": "string", + "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "Start Date Time" + }, + "end_date_time": { + "type": "string", + "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "End Date Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Receive Lifetime" + }, + "transmit_lifetime": { + "type": "object", + "properties": { + "infinite": { + "type": "boolean", + "title": "Infinite" + }, + "start_date_time": { + "type": "string", + "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "Start Date Time" + }, + "end_date_time": { + "type": "string", + "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "End Date Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transmit Lifetime" + }, + "local_time": { + "type": "boolean", + "description": "Configuring secret using the local timezone from system clock. Default is UTC.", + "title": "Local Time" + } + }, + "required": [ + "secret", + "receive_lifetime", + "transmit_lifetime", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Secrets" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "profile" + ] + }, + "title": "Shared Secret Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Security" + }, + "management_ssh": { + "type": "object", + "properties": { + "access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Standard ACL Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Access Groups" + }, + "ipv6_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Standard ACL Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Access Groups" + }, + "idle_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "description": "Idle timeout in minutes.", + "title": "Idle Timeout" + }, + "cipher": { + "description": "Cryptographic ciphers for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Cipher" + }, + "key_exchange": { + "description": "Cryptographic key exchange methods for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Key Exchange" + }, + "mac": { + "description": "Cryptographic MAC algorithms for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "MAC" + }, + "fips_restrictions": { + "type": "boolean", + "description": "Use FIPS compliant algorithms.", + "title": "Fips Restrictions" + }, + "hostkey": { + "type": "object", + "properties": { + "server": { + "description": "SSH host key settings.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Server" + }, + "server_cert": { + "type": "string", + "description": "Configure switch's hostkey cert file.", + "title": "Server Cert" + }, + "client_strict_checking": { + "type": "boolean", + "description": "Enforce strict host key checking.", + "title": "Client Strict Checking" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hostkey" + }, + "enable": { + "description": "Enable SSH daemon.", + "type": "boolean", + "title": "Enable" + }, + "connection": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum total number of SSH sessions to device.", + "title": "Limit" + }, + "per_host": { + "type": "integer", + "minimum": 1, + "maximum": 20, + "description": "Maximum number of SSH sessions to device from a single host.", + "title": "Per Host" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connection" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "enable": { + "description": "Enable SSH in VRF.", + "type": "boolean", + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "log_level": { + "type": "string", + "description": "SSH daemon log level.", + "title": "Log Level" + }, + "client_alive": { + "type": "object", + "properties": { + "count_max": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "Number of keep-alive packets that can be sent without a response before the connection is assumed dead.", + "title": "Count Max" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "Time period (in seconds) to send SSH keep-alive packets.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client Alive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management SSH" + }, + "management_tech_support": { + "type": "object", + "properties": { + "policy_show_tech_support": { + "type": "object", + "properties": { + "exclude_commands": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "Command to exclude from tech-support.", + "title": "Command" + }, + "type": { + "type": "string", + "enum": [ + "text", + "json" + ], + "default": "text", + "description": "The supported values for type are platform dependent.", + "title": "Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Exclude Commands" + }, + "include_commands": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "Command to include in tech-support.", + "title": "Command" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Include Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy Show Tech Support" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Tech Support" + }, + "match_list_input": { + "type": "object", + "title": "Match Lists", + "properties": { + "prefix_ipv4": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "minItems": 1, + "description": "List of IPv4 prefixes (with the subnet mask e.g. 192.0.2.0/24).", + "items": { + "type": "string" + }, + "title": "Prefixes" + } + }, + "required": [ + "prefixes", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix IPv4" + }, + "prefix_ipv6": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "minItems": 1, + "description": "List of IPv6 prefixes (with the subnet mask e.g. 2001:db8:abcd:0013::/64).", + "items": { + "type": "string" + }, + "title": "Prefixes" + } + }, + "required": [ + "prefixes", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix IPv6" + }, + "string": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Match-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "match_regex": { + "type": "string", + "description": "Regular Expression.", + "title": "Match Regex" + } + }, + "required": [ + "match_regex", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "String" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "mcs_client": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "cvx_secondary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "server_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP or hostname." + }, + "title": "Server Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CVX Secondary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MCS Client" + }, + "metadata": { + "type": "object", + "description": "The data under `metadata` is used for documentation, validation or integration purposes.\nIt will not affect the generated EOS configuration.", + "properties": { + "platform": { + "type": "string", + "title": "Platform" + }, + "system_mac_address": { + "type": "string", + "title": "System MAC Address" + }, + "cv_tags": { + "type": "object", + "properties": { + "device_tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "value": { + "type": "string", + "title": "Value" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Device Tags" + }, + "interface_tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "interface": { + "type": "string", + "title": "Interface" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "value": { + "type": "string", + "title": "Value" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tags" + } + }, + "required": [ + "interface" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Tags" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cv Tags" + }, + "cv_pathfinder": { + "type": "object", + "description": "Metadata used for CV Pathfinder visualization on CloudVision.", + "properties": { + "role": { + "type": "string", + "title": "Role" + }, + "region": { + "type": "string", + "title": "Region" + }, + "zone": { + "type": "string", + "title": "Zone" + }, + "site": { + "type": "string", + "title": "Site" + }, + "vtep_ip": { + "type": "string", + "title": "Vtep IP" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + }, + "address": { + "type": "string", + "title": "Address" + }, + "pathfinders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vtep_ip": { + "type": "string", + "title": "Vtep IP" + } + }, + "required": [ + "vtep_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathfinders" + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "carrier": { + "type": "string", + "title": "Carrier" + }, + "circuit_id": { + "type": "string", + "title": "Circuit ID" + }, + "pathgroup": { + "type": "string", + "title": "Pathgroup" + }, + "public_ip": { + "type": "string", + "title": "Public IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interfaces" + }, + "pathgroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "carriers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Carriers" + }, + "imported_carriers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Imported Carriers" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathgroups" + }, + "regions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "zones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "sites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "location": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Location" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sites" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Zones" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Regions" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "avts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "constraints": { + "type": "object", + "properties": { + "jitter": { + "type": "integer", + "title": "Jitter" + }, + "latency": { + "type": "integer", + "title": "Latency" + }, + "lossrate": { + "type": "string", + "title": "Lossrate" + }, + "hop_count": { + "type": "string", + "title": "Hop Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Constraints" + }, + "description": { + "type": "string", + "title": "Description" + }, + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "pathgroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "preference": { + "type": "string", + "title": "Preference" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathgroups" + }, + "application_profiles": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Application Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Avts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VRFs" + }, + "internet_exit_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "title": "Type" + }, + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + }, + "upload_bandwidth": { + "type": "integer", + "title": "Upload Bandwidth" + }, + "download_bandwidth": { + "type": "integer", + "title": "Download Bandwidth" + }, + "firewall": { + "type": "boolean", + "title": "Firewall" + }, + "ips_control": { + "type": "boolean", + "title": "Ips Control" + }, + "acceptable_use_policy": { + "type": "boolean", + "title": "Acceptable Use Policy" + }, + "vpn_credentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fqdn": { + "type": "string", + "title": "Fqdn" + }, + "vpn_type": { + "type": "string", + "title": "VPN Type" + }, + "pre_shared_key": { + "type": "string", + "title": "Pre Shared Key" + } + }, + "required": [ + "fqdn", + "vpn_type", + "pre_shared_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VPN Credentials" + }, + "tunnels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "preference": { + "type": "string", + "title": "Preference" + } + }, + "required": [ + "name", + "preference" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tunnels" + } + }, + "required": [ + "name", + "type", + "city", + "country", + "firewall", + "ips_control", + "acceptable_use_policy", + "vpn_credentials", + "tunnels" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Internet Exit Policies" + }, + "applications": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "builtin_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Builtin Applications" + }, + "user_defined_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "User Defined Applications" + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "category": { + "type": "string", + "title": "Category" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Categories" + }, + "transport_protocols": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Transport Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Profiles" + }, + "categories": { + "type": "object", + "properties": { + "builtin_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "category": { + "type": "string", + "title": "Category" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Builtin Applications" + }, + "user_defined_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "category": { + "type": "string", + "title": "Category" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "User Defined Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Categories" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cv Pathfinder" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Metadata" + }, + "mlag_configuration": { + "type": "object", + "title": "Multi-Chassis Link Aggregation (MLAG) Configuration", + "properties": { + "domain_id": { + "type": "string", + "title": "Domain ID" + }, + "heartbeat_interval": { + "type": "integer", + "description": "Heartbeat interval in milliseconds.", + "title": "Heartbeat Interval" + }, + "local_interface": { + "description": "Local Interface Name.", + "type": "string", + "title": "Local Interface" + }, + "peer_address": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "Peer Address" + }, + "peer_address_heartbeat": { + "type": "object", + "properties": { + "peer_ip": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "Peer IP" + }, + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Peer Address Heartbeat" + }, + "dual_primary_detection_delay": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Detection Delay" + }, + "dual_primary_recovery_delay_mlag": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Recovery Delay MLAG" + }, + "dual_primary_recovery_delay_non_mlag": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Recovery Delay Non MLAG" + }, + "peer_link": { + "description": "Port-Channel interface name.", + "type": "string", + "title": "Peer Link" + }, + "reload_delay_mlag": { + "type": "string", + "description": "Delay in seconds <0-86400> or 'infinity'.", + "title": "Reload Delay MLAG" + }, + "reload_delay_non_mlag": { + "type": "string", + "description": "Delay in seconds <0-86400> or 'infinity'.", + "title": "Reload Delay Non MLAG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "monitor_connectivity": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "interval": { + "type": "integer", + "title": "Interval" + }, + "interface_sets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "interfaces": { + "type": "string", + "description": "Interface range(s) should be of same type, Ethernet, Loopback, Management etc.\nMultiple interface ranges can be specified separated by \",\".\n", + "title": "Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Sets" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Host Name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip": { + "type": "string", + "title": "IP" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "url": { + "type": "string", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "VRF Name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "interface_sets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "interfaces": { + "type": "string", + "title": "Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Sets" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Host name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip": { + "type": "string", + "title": "IP" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "url": { + "type": "string", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Connectivity" + }, + "monitor_layer1": { + "type": "object", + "description": "Enable SYSLOG messages on transceiver SMBus communication failures.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable monitor layer1.", + "title": "Enabled" + }, + "logging_mac_fault": { + "type": "boolean", + "description": "Enable MAC fault logging.", + "title": "Logging MAC Fault" + }, + "logging_transceiver": { + "type": "object", + "description": "Configure transceiver monitoring logging.", + "properties": { + "dom": { + "type": "boolean", + "description": "Enable transceiver Digital Optical Monitoring (DOM) logging.", + "title": "Dom" + }, + "communication": { + "type": "boolean", + "description": "Enable transceiver SMBus fail and reset logging.", + "title": "Communication" + }, + "enabled": { + "type": "boolean", + "description": "Some platforms support only the `logging transceiver` command. `enabled` key configures this command.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging Transceiver" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Layer1" + }, + "monitor_sessions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Session Name.", + "title": "Name" + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name, range or comma separated list.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "rx", + "tx", + "both" + ], + "title": "Direction" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL Name.", + "type": "string", + "title": "Name" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sources" + }, + "destinations": { + "type": "array", + "items": { + "type": "string", + "description": "'cpu' or interface name, range or comma separated list." + }, + "title": "Destinations" + }, + "encapsulation_gre_metadata_tx": { + "type": "boolean", + "title": "Encapsulation Gre Metadata TX" + }, + "header_remove_size": { + "type": "integer", + "description": "Number of bytes to remove from header.", + "title": "Header Remove Size" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL Name.", + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + }, + "rate_limit_per_ingress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Ingress Chip" + }, + "rate_limit_per_egress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Egress Chip" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "truncate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "type": "integer", + "description": "Size in bytes.", + "title": "Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncate" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Monitor Sessions" + }, + "monitor_telemetry_influx": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "title": "VRF" + }, + "destinations": { + "type": "array", + "description": "Configure telemetry output destinations.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "InfluxDB connection name.", + "title": "Name" + }, + "database": { + "type": "string", + "description": "Set name of the database.", + "title": "Database" + }, + "data_retention_policy": { + "type": "string", + "title": "Data Retention Policy" + }, + "url": { + "type": "string", + "description": "It only accepts http(s), udp and unix domain destination URL.", + "pattern": "(http(s)?|udp|unix)://.+", + "title": "URL" + }, + "username": { + "type": "string", + "title": "Username" + }, + "password": { + "type": "string", + "title": "Password" + }, + "password_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Password Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Destinations" + }, + "source_group_standard_disabled": { + "type": "boolean", + "description": "Disable standard set of telemetry.", + "title": "Source Group Standard Disabled" + }, + "source_sockets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Label of the socket connection.", + "title": "Name" + }, + "connection_limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Connection Limit" + }, + "url": { + "type": "string", + "description": "It only accepts http(s), udp and unix domain socket URL.", + "pattern": "(http(s)?|udp|unix)://.+", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Source Sockets" + }, + "tags": { + "type": "array", + "description": "Extra tags added to the telemetry output.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Key of the global tag pair.", + "title": "Name" + }, + "value": { + "type": "string", + "description": "Value of the global tag pair.", + "title": "Value" + } + }, + "required": [ + "value", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tags" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Telemetry Influx" + }, + "monitor_telemetry_postcard_policy": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "default": true, + "description": "Enable or disable the postcard telemetry feature.", + "title": "Disabled" + }, + "ingress": { + "type": "object", + "properties": { + "collection": { + "type": "object", + "description": "Collector configuration.", + "properties": { + "source": { + "type": "string", + "description": "Source IP address of GRE tunnel.", + "title": "Source" + }, + "destination": { + "type": "string", + "description": "Destination IP address of GRE tunnel.", + "title": "Destination" + }, + "version": { + "type": "integer", + "description": "Postcard version.", + "enum": [ + 1, + 2 + ], + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collection" + }, + "sample": { + "type": "object", + "description": "Sampling parameters.", + "properties": { + "rate": { + "type": "integer", + "description": "Sampling rate. `rate` is preferred when both `rate` and `tcp_udp_checksum` are defined.", + "enum": [ + 16384, + 32768, + 65536 + ], + "title": "Rate" + }, + "tcp_udp_checksum": { + "type": "object", + "description": "TCP/UDP parameters.", + "properties": { + "value": { + "type": "integer", + "description": "TCP/UDP checksum or IP ID value.", + "minimum": 0, + "maximum": 65535, + "title": "Value" + }, + "mask": { + "type": "string", + "description": "16 bit hexadecimal mask for TCP/UDP or IP ID with atmost 2 unset bits.", + "title": "Mask" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP UDP Checksum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sample" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ingress" + }, + "marker_vxlan": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable vxlan marking using default bit 0.", + "title": "Enabled" + }, + "header_word_zero_bit": { + "type": "integer", + "minimum": 1, + "maximum": 31, + "title": "Header Word Zero Bit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Marker VxLAN" + }, + "profiles": { + "type": "array", + "description": "Postcard telemetry profiles.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile name.", + "title": "Name" + }, + "ingress_sample_policy": { + "type": "string", + "title": "Ingress Sample Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "sample_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "match_rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "description": "IP address version.", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Type" + }, + "destination_prefix": { + "type": "string", + "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", + "title": "Destination Prefix" + }, + "source_prefix": { + "type": "string", + "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", + "title": "Source Prefix" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "title": "Protocol" + }, + "source_ports": { + "type": "array", + "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\" ]\n [ \"www\" ]", + "items": { + "type": "string" + }, + "title": "Source Ports" + }, + "destination_ports": { + "type": "array", + "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\", \"80\" ]\n [ \"https\" ]", + "items": { + "type": "string" + }, + "title": "Destination Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "protocol" + ] + }, + "title": "Protocols" + } + }, + "required": [ + "type", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Match Rules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Sample Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Telemetry Postcard Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface_disabled_default": { + "type": "boolean", + "title": "Interface Disabled Default" + }, + "router_id": { + "type": "string", + "title": "Router ID" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "transport_address_interface": { + "description": "Interface Name.", + "type": "string", + "title": "Transport Address Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + }, + "icmp": { + "description": "Enables the LSRs to generate ICMP reply messages and deliver them to the originating host.", + "type": "object", + "properties": { + "fragmentation_needed_tunneling": { + "type": "boolean", + "description": "Enables the MPLS tunneling of MTU exceeded ICMP replies (fragmentation needed, packet too big).", + "title": "Fragmentation Needed Tunneling" + }, + "ttl_exceeded_tunneling": { + "type": "boolean", + "description": "Enables the MPLS tunneling of TTL exceeded ICMP replies.", + "title": "TTL Exceeded Tunneling" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ICMP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "name_server": { + "type": "object", + "properties": { + "source": { + "type": "object", + "properties": { + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "nodes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Nodes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Name Server" + }, + "ntp": { + "type": "object", + "properties": { + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Source interface.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", + "title": "Name" + }, + "burst": { + "type": "boolean", + "title": "Burst" + }, + "iburst": { + "type": "boolean", + "title": "Iburst" + }, + "key": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key" + }, + "local_interface": { + "type": "string", + "description": "Source interface.", + "title": "Local Interface" + }, + "maxpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of maxpoll between 3 - 17 (Logarithmic).", + "title": "Maxpoll" + }, + "minpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of minpoll between 3 - 17 (Logarithmic).", + "title": "Minpoll" + }, + "preferred": { + "type": "boolean", + "title": "Preferred" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 4, + "title": "Version" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Servers" + }, + "authenticate": { + "type": "boolean", + "title": "Authenticate" + }, + "authenticate_servers_only": { + "type": "boolean", + "title": "Authenticate Servers Only" + }, + "authentication_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65534, + "description": "Key identifier.", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Obfuscated key.", + "title": "Key" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "title": "Key Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Authentication Keys" + }, + "trusted_keys": { + "type": "string", + "description": "List of trusted-keys as string ex. 10-12,15.", + "title": "Trusted Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "NTP" + }, + "patch_panel": { + "type": "object", + "properties": { + "connector": { + "type": "object", + "properties": { + "interface": { + "type": "object", + "properties": { + "patch": { + "type": "object", + "properties": { + "bgp_vpws_remote_failure_errdisable": { + "type": "boolean", + "title": "BGP Vpws Remote Failure Errdisable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Patch" + }, + "recovery": { + "type": "object", + "properties": { + "review_delay": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "minimum": 10, + "maximum": 600, + "description": "Minimum delay.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 15, + "maximum": 900, + "description": "Maximum delay.", + "title": "Max" + } + }, + "required": [ + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Review Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Recovery" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connector" + }, + "patches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "connectors": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "description": "Must have exactly two connectors to a patch of which at least one must be of type \"interface\".", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "type": { + "type": "string", + "enum": [ + "interface", + "pseudowire" + ], + "title": "Type" + }, + "endpoint": { + "type": "string", + "description": "String with relevant endpoint depending on type.\nExamples:\n- \"Ethernet1\"\n- \"Ethernet1 dot1q vlan 123\"\n- \"bgp vpws TENANT_A pseudowire VPWS_PW_1\"\n- \"ldp LDP_PW_1\"\n", + "title": "Endpoint" + } + }, + "required": [ + "type", + "endpoint", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Connectors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Patches" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Patch Panel" + }, + "peer_filters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-filter Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "match": { + "type": "string", + "description": "Match as string.\nExample: \"as-range 1-100 result accept\"\n", + "title": "Match" + } + }, + "required": [ + "match", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Peer Filters" + }, + "platform": { + "type": "object", + "description": "Every key below this point is platform dependent.", + "properties": { + "trident": { + "type": "object", + "properties": { + "forwarding_table_partition": { + "type": "string", + "title": "Forwarding Table Partition" + }, + "mmu": { + "type": "object", + "description": "Memory Management Unit settings.\n", + "properties": { + "active_profile": { + "type": "string", + "description": "The queue profile to be applied to the platform.\n", + "title": "Active Profile" + }, + "queue_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "multicast_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "ID" + }, + "unit": { + "type": "string", + "enum": [ + "bytes", + "cells" + ], + "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", + "title": "Unit" + }, + "reserved": { + "type": "integer", + "description": "Amount of memory that should be reserved for this\nqueue.\n", + "title": "Reserved" + }, + "threshold": { + "type": "string", + "description": "Dynamic Shared Memory threshold.\n", + "title": "Threshold" + }, + "drop": { + "type": "object", + "properties": { + "precedence": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "title": "Precedence" + }, + "threshold": { + "type": "string", + "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", + "title": "Threshold" + } + }, + "required": [ + "precedence", + "threshold" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Multicast Queues" + }, + "unicast_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "ID" + }, + "unit": { + "type": "string", + "enum": [ + "bytes", + "cells" + ], + "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", + "title": "Unit" + }, + "reserved": { + "type": "integer", + "description": "Amount of memory that should be reserved for this\nqueue.\n", + "title": "Reserved" + }, + "threshold": { + "type": "string", + "description": "Dynamic Shared Memory threshold.\n", + "title": "Threshold" + }, + "drop": { + "type": "object", + "properties": { + "precedence": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "title": "Precedence" + }, + "threshold": { + "type": "string", + "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", + "title": "Threshold" + } + }, + "required": [ + "precedence", + "threshold" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Unicast Queues" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Queue Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mmu" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trident" + }, + "sand": { + "type": "object", + "description": "Most of the platform sand options are hardware dependent and optional.", + "properties": { + "qos_maps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Traffic Class" + }, + "to_network_qos": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "title": "To Network QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "QOS Maps" + }, + "lag": { + "type": "object", + "properties": { + "hardware_only": { + "type": "boolean", + "title": "Hardware Only" + }, + "mode": { + "type": "string", + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LAG" + }, + "forwarding_mode": { + "type": "string", + "title": "Forwarding Mode" + }, + "multicast_replication": { + "type": "object", + "properties": { + "default": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast Replication" + }, + "mdb_profile": { + "type": "string", + "description": "Sand platforms MDB Profile configuration. Note: l3-xxxl does not support MLAG.", + "enum": [ + "balanced", + "balanced-xl", + "l3", + "l3-xl", + "l3-xxl", + "l3-xxxl" + ], + "title": "MDB Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sand" + }, + "sfe": { + "type": "object", + "description": "Sfe (Software Forwarding Engine) settings.", + "properties": { + "data_plane_cpu_allocation_max": { + "type": "integer", + "description": "Maximum number of CPUs used for data plane traffic forwarding.", + "minimum": 1, + "maximum": 128, + "title": "Data Plane CPU Allocation Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sfe" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Platform" + }, + "poe": { + "type": "object", + "properties": { + "reboot": { + "type": "object", + "description": "Set the global PoE power behavior for PoE ports when the system is rebooted.", + "properties": { + "action": { + "type": "string", + "enum": [ + "power-off", + "maintain" + ], + "description": "PoE action for interface. By default in EOS, reboot action is set to power-off.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "interface_shutdown": { + "type": "object", + "description": "Set the global PoE power behavior for PoE ports when ports are admin down.", + "properties": { + "action": { + "type": "string", + "enum": [ + "power-off", + "maintain" + ], + "description": "PoE action for interface. By default in EOS, interface shutdown action is set to maintain.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "policy_maps": { + "type": "object", + "properties": { + "pbr": { + "type": "array", + "description": "PBR Policy-Maps.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy-Map Name.", + "title": "Name" + }, + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class Name.", + "title": "Name" + }, + "index": { + "type": "integer", + "title": "Index" + }, + "drop": { + "description": "'drop' and 'set' are mutually exclusive.", + "type": "boolean", + "title": "Drop" + }, + "set": { + "description": "Set Nexthop\n'drop' and 'set' are mutually exclusive.\n", + "type": "object", + "properties": { + "nexthop": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "IP Address" + }, + "recursive": { + "type": "boolean", + "title": "Recursive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Nexthop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "PBR" + }, + "qos": { + "type": "array", + "description": "QOS Policy-Maps.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy-Map Name.", + "title": "Name" + }, + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class Name.", + "title": "Name" + }, + "set": { + "type": "object", + "properties": { + "cos": { + "type": "integer", + "title": "COS" + }, + "dscp": { + "type": "string", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "title": "Traffic Class" + }, + "drop_precedence": { + "type": "integer", + "title": "Drop Precedence" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set" + }, + "police": { + "type": "object", + "properties": { + "rate": { + "type": "integer", + "description": "Specify rate.\nRange in kbps <8-200000000>.", + "title": "Rate" + }, + "rate_unit": { + "type": "string", + "enum": [ + "bps", + "kbps", + "mbps", + "pps" + ], + "default": "bps", + "title": "Rate Unit" + }, + "rate_burst_size": { + "type": "integer", + "description": "Range in bytes <256-128000000>.", + "title": "Rate Burst Size" + }, + "rate_burst_size_unit": { + "type": "string", + "enum": [ + "bytes", + "kbytes", + "mbytes", + "packets" + ], + "default": "bytes", + "title": "Rate Burst Size Unit" + }, + "action": { + "type": "object", + "properties": { + "type": { + "description": "Set action for policed traffic.", + "type": "string", + "enum": [ + "dscp", + "drop-precedence" + ], + "title": "Type" + }, + "dscp_value": { + "description": "Set when action.type is set to \"dscp\".", + "type": "string", + "title": "DSCP Value" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Action" + }, + "higher_rate": { + "type": "integer", + "description": "Specify higher rate.\nRange in kbps .", + "title": "Higher Rate" + }, + "higher_rate_unit": { + "type": "string", + "enum": [ + "bps", + "kbps", + "mbps", + "pps" + ], + "default": "bps", + "title": "Higher Rate Unit" + }, + "higher_rate_burst_size": { + "type": "integer", + "description": "Range in bytes <256-128000000>.", + "title": "Higher Rate Burst Size" + }, + "higher_rate_burst_size_unit": { + "type": "string", + "enum": [ + "bytes", + "kbytes", + "mbytes", + "packets" + ], + "default": "bytes", + "title": "Higher Rate Burst Size Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Police" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS" + }, + "copp_system_policy": { + "type": "object", + "description": "Control-plane policy configuration.", + "properties": { + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "shape": { + "type": "integer", + "description": "Maximum rate limit.", + "minimum": 0, + "maximum": 10000000, + "title": "Shape" + }, + "bandwidth": { + "type": "integer", + "description": "Minimum bandwidth.", + "minimum": 0, + "maximum": 10000000, + "title": "Bandwidth" + }, + "rate_unit": { + "type": "string", + "description": "The `rate_unit` must be defined for `shape` and `bandwidth`.", + "enum": [ + "pps", + "kbps" + ], + "title": "Rate Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Copp System Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy Maps" + }, + "port_channel_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulation are all optional, and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "native_vlan": { + "type": "integer", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "mlag": { + "type": "integer", + "description": "MLAG ID.", + "minimum": 1, + "maximum": 2000, + "title": "MLAG" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "lacp_fallback_timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "default": 90, + "minimum": 0, + "maximum": 300, + "title": "LACP Fallback Timeout" + }, + "lacp_fallback_mode": { + "type": "string", + "enum": [ + "individual", + "static" + ], + "title": "LACP Fallback Mode" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "neighbor": { + "type": "string", + "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", + "title": "Neighbor" + }, + "per_link": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rfc_7130": { + "type": "boolean", + "title": "Rfc 7130" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Per Link" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "default": false, + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "esi": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", + "deprecated": true, + "title": "Esi" + }, + "rt": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", + "deprecated": true, + "title": "Rt" + }, + "lacp_id": { + "type": "string", + "description": "LACP ID with format xxxx.xxxx.xxxx.", + "title": "LACP ID" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + }, + "mpass": { + "type": "boolean", + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "Mpass" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 address/mask.", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Port Channel Interfaces" + }, + "prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit 10.255.0.0/27 eq 32\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Prefix Lists" + }, + "priority_flow_control": { + "type": "object", + "description": "Global Priority Flow Control settings.\n", + "properties": { + "all_off": { + "type": "boolean", + "description": "Disable PFC on all interfaces.\n", + "title": "All Off" + }, + "watchdog": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "drop", + "no-drop" + ], + "description": "Action on stuck queue.\n", + "title": "Action" + }, + "timeout": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Timeout" + }, + "polling_interval": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,3})?$", + "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point.\nExample: 0.005 or 60\n", + "title": "Polling Interval" + }, + "recovery_time": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Recovery Time" + }, + "override_action_drop": { + "type": "boolean", + "description": "Override configured action on stuck queue to drop.\n", + "title": "Override Action Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Watchdog" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "prompt": { + "type": "string", + "title": "Prompt" + }, + "ptp": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "boundary", + "disabled", + "e2etransparent", + "gptp", + "ordinarymaster", + "p2ptransparent" + ], + "title": "Mode" + }, + "profile": { + "type": "string", + "enum": [ + "g8275.1", + "g8275.2" + ], + "title": "Profile" + }, + "mode_one_step": { + "type": "boolean", + "title": "Mode One Step" + }, + "forward_unicast": { + "type": "boolean", + "title": "Forward Unicast" + }, + "clock_identity": { + "type": "string", + "description": "The clock-id in xx:xx:xx:xx:xx:xx format.", + "title": "Clock Identity" + }, + "source": { + "type": "object", + "properties": { + "ip": { + "description": "Source IP.", + "type": "string", + "title": "IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "priority1": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority1" + }, + "priority2": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority2" + }, + "ttl": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "TTL" + }, + "domain": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Domain" + }, + "message_type": { + "type": "object", + "properties": { + "general": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "General" + }, + "event": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Message Type" + }, + "monitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "threshold": { + "type": "object", + "properties": { + "offset_from_master": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Offset From Master" + }, + "mean_path_delay": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Mean Path Delay" + }, + "drop": { + "type": "object", + "properties": { + "offset_from_master": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Offset From Master" + }, + "mean_path_delay": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Mean Path Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + }, + "missing_message": { + "type": "object", + "properties": { + "intervals": { + "type": "object", + "properties": { + "announce": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Announce" + }, + "follow_up": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Follow Up" + }, + "sync": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Intervals" + }, + "sequence_ids": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "announce": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Announce" + }, + "delay_resp": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Delay Resp" + }, + "follow_up": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Follow Up" + }, + "sync": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sequence IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Message" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "qos": { + "type": "object", + "properties": { + "map": { + "type": "object", + "properties": { + "cos": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"0 1 to traffic-class 1\"\n" + }, + "title": "COS" + }, + "dscp": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"8 9 10 to traffic-class 1\"\n" + }, + "title": "DSCP" + }, + "exp": { + "type": "array", + "items": { + "type": "string", + "description": "Example \"0 to traffic-class 0\"\n" + }, + "title": "EXP" + }, + "traffic_class": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"1 to dscp 32\"\n" + }, + "title": "Traffic Class" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Map" + }, + "rewrite_dscp": { + "type": "boolean", + "title": "Rewrite DSCP" + }, + "random_detect": { + "type": "object", + "description": "Global random-detect settings.", + "properties": { + "ecn": { + "type": "object", + "description": "Global ECN Configuration.", + "properties": { + "allow_non_ect": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Allow non-ect and set drop-precedence 1 in a policy map simultaneously.\nCheck which command is required for your platform.", + "title": "Enabled" + }, + "chip_based": { + "type": "boolean", + "description": "Allow non-ect chip-based.", + "title": "Chip Based" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allow Non Ect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "qos_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile-Name.", + "title": "Name" + }, + "trust": { + "type": "string", + "enum": [ + "cos", + "dscp", + "disabled" + ], + "title": "Trust" + }, + "cos": { + "type": "integer", + "title": "COS" + }, + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "service_policy": { + "type": "object", + "properties": { + "type": { + "type": "object", + "properties": { + "qos_input": { + "type": "string", + "description": "Policy-map name.", + "title": "QOS Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.", + "title": "Comment" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Units to be used for the threshold values.\nThis should be one of segments, byte, kbytes, mbytes.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Random-detect ECN maximum mark probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + }, + "drop": { + "description": "Set WRED parameters.", + "type": "object", + "properties": { + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "microseconds", + "milliseconds" + ], + "description": "Units to be used for the threshold values.", + "title": "Units" + }, + "drop_precedence": { + "type": "integer", + "minimum": 0, + "maximum": 2, + "description": "Specify Drop Precedence value.", + "title": "Drop Precedence" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "WRED minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "WRED maximum-threshold.", + "title": "Max" + }, + "drop_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "WRED drop probability.", + "title": "Drop Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "WRED weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max", + "drop_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "TX Queues" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "UC TX queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.", + "title": "Comment" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Unit to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Random-detect ECN maximum mark probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + }, + "drop": { + "description": "Set WRED parameters.", + "type": "object", + "properties": { + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "microseconds", + "milliseconds" + ], + "description": "Units to be used for the threshold values.", + "title": "Units" + }, + "drop_precedence": { + "type": "integer", + "minimum": 0, + "maximum": 2, + "description": "Specify Drop Precedence value.", + "title": "Drop Precedence" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "WRED minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "WRED maximum-threshold.", + "title": "Max" + }, + "drop_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "WRED drop probability.", + "title": "Drop Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "WRED weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max", + "drop_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Uc TX Queues" + }, + "mc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "MC TX queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.\n", + "title": "Comment" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Mc TX Queues" + }, + "priority_flow_control": { + "type": "object", + "description": "Priority Flow Control settings.\n", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable Priority Flow control.\n", + "title": "Enabled" + }, + "watchdog": { + "type": "object", + "description": "Watchdog can detect stuck transmit queues.\n", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable the watchdog on stuck transmit queues.\n", + "title": "Enabled" + }, + "action": { + "type": "string", + "enum": [ + "drop", + "notify-only" + ], + "description": "Override the default error-disable action to either drop\ntraffic on the stuck queue or notify-only\nwithout making any actions on the stuck queue.\n", + "title": "Action" + }, + "timer": { + "type": "object", + "description": "Timer thresholds whilst monitoring queues.\n", + "properties": { + "timeout": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Timeout" + }, + "polling_interval": { + "type": "string", + "pattern": "^auto|\\d+(\\.\\d{1,3})?$", + "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point or set\nto 'auto' based on recovery_time and timeout values.\nExample: 0.005 or 60\n", + "title": "Polling Interval" + }, + "recovery_time": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Recovery Time" + }, + "forced": { + "type": "boolean", + "description": "Force recover any stuck queue(s) after the duration,\nirrespective of whether PFC frames are being\nreceived or not.\n", + "title": "Forced" + } + }, + "required": [ + "timeout", + "polling_interval", + "recovery_time" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timer" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Watchdog" + }, + "priorities": { + "type": "array", + "description": "Set the drop/no_drop on each queue.\n", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Priority queue number (COS value).\n", + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "description": "Enable Priority Flow Control frames on this queue.\n", + "title": "No Drop" + } + }, + "required": [ + "priority", + "no_drop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS Profiles" + }, + "queue_monitor_length": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default_thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "description": "Default high threshold for Ethernet Interfaces.\n", + "title": "High" + }, + "low": { + "type": "integer", + "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Thresholds" + }, + "log": { + "type": "integer", + "description": "Logging interval in seconds.", + "title": "Log" + }, + "notifying": { + "type": "boolean", + "description": "Should only be used for platforms supporting the \"queue-monitor length notifying\" CLI.", + "title": "Notifying" + }, + "cpu": { + "type": "object", + "properties": { + "thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "title": "High" + }, + "low": { + "type": "integer", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Thresholds" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CPU" + }, + "tx_latency": { + "type": "boolean", + "description": "Enable tx-latency mode.", + "title": "TX Latency" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Queue Monitor Length" + }, + "queue_monitor_streaming": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "ip_access_group": { + "type": "string", + "description": "Name of IP ACL.", + "title": "IP Access Group" + }, + "ipv6_access_group": { + "type": "string", + "description": "Name of IPv6 ACL.", + "title": "IPv6 Access Group" + }, + "max_connections": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "title": "Max Connections" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Queue Monitor Streaming" + }, + "radius_server": { + "type": "object", + "properties": { + "attribute_32_include_in_access_req": { + "type": "object", + "properties": { + "hostname": { + "type": "boolean", + "title": "Hostname" + }, + "format": { + "type": "string", + "description": "Specify the format of the NAS-Identifier. If 'hostname' is set, this is ignored.", + "title": "Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Attribute 32 Include In Access Req" + }, + "dynamic_authorization": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + }, + "tls_ssl_profile": { + "type": "string", + "description": "Name of TLS profile.", + "title": "TLS SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic Authorization" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "tls": { + "type": "object", + "description": "When TLS is configured, `key` is ignored..", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable TLS for radius-server.", + "title": "Enabled" + }, + "ssl_profile": { + "type": "string", + "description": "Name of TLS profile.", + "title": "SSL Profile" + }, + "port": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "TCP Port used for TLS. EOS default is 2083.", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TLS" + }, + "timeout": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + }, + "retransmit": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "title": "Retransmit" + }, + "key": { + "type": "string", + "description": "Encrypted key - only type 7 supported.\nWhen TLS is configured, `key` is ignored.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "host" + ] + }, + "title": "Hosts" + }, + "tls_ssl_profile": { + "type": "string", + "description": "Name of global TLS profile.", + "title": "TLS SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Radius Server" + }, + "radius_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "key": { + "type": "string", + "description": "Encrypted key.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Radius Servers" + }, + "redundancy": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "description": "Redundancy Protocol.", + "title": "Protocol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redundancy" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Role name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence number.", + "title": "Sequence" + }, + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Action" + }, + "mode": { + "type": "string", + "description": "\"config\", \"config-all\", \"exec\" or mode key as string.\n", + "title": "Mode" + }, + "command": { + "type": "string", + "description": "Command as string.", + "title": "Command" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Roles" + }, + "route_maps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Route-map Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "description": { + "type": "string", + "title": "Description" + }, + "match": { + "type": "array", + "description": "List of \"match\" statements.", + "items": { + "type": "string", + "description": "Match as string.\nExample: \"ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY\"\n" + }, + "title": "Match" + }, + "set": { + "type": "array", + "description": "List of \"set\" statements.", + "items": { + "type": "string", + "description": "Set as string.\nExample: \"origin incomplete\"\n" + }, + "title": "Set" + }, + "sub_route_map": { + "type": "string", + "description": "Name of Sub-Route-map.", + "title": "Sub Route Map" + }, + "continue": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "sequence_number": { + "type": "integer", + "title": "Sequence Number" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Continue" + } + }, + "required": [ + "type", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Route Maps" + }, + "router_adaptive_virtual_topology": { + "type": "object", + "properties": { + "topology_role": { + "description": "Role name.", + "type": "string", + "enum": [ + "edge", + "pathfinder", + "transit region", + "transit zone" + ], + "title": "Topology Role" + }, + "region": { + "type": "object", + "description": "Region name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Region" + }, + "zone": { + "type": "object", + "description": "Zone name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Zone" + }, + "site": { + "type": "object", + "description": "Site name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Site" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "AVT Name.", + "title": "Name" + }, + "load_balance_policy": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance Policy" + }, + "internet_exit_policy": { + "type": "string", + "description": "Name of the internet exit policy.", + "title": "Internet Exit Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "policies": { + "type": "array", + "description": "A sequence of application profiles mapped to some virtual topologies.\n\nWhen `wan_mode` is set to `autovpn`, the rules are indexed using 10* in the list.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "matches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "application_profile": { + "type": "string", + "description": "Application profile name.", + "title": "Application Profile" + }, + "avt_profile": { + "type": "string", + "description": "AVT Profile name.", + "title": "Avt Profile" + }, + "dscp": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "description": "Set DSCP for matched traffic.", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Set traffic-class for matched traffic.", + "title": "Traffic Class" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Matches" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "policy": { + "type": "string", + "description": "AVT Policy name.", + "title": "Policy" + }, + "profiles": { + "type": "array", + "description": "AVT profiles in this VRF.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "AVT profile name.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Unique ID for this AVT (per VRF).", + "minimum": 1, + "maximum": 254, + "title": "ID" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Adaptive Virtual Topology" + }, + "router_bfd": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "local_address": { + "type": "string", + "description": "Configure BFD local IP/IPv6 address.", + "title": "Local Address" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "multihop": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multihop" + }, + "session_snapshot_interval": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Interval in seconds.\nIntervals below 10 are considered \"dangerous\" on EOS and must have `session_snapshot_interval_dangerous` set to `true`.", + "title": "Session Snapshot Interval" + }, + "session_snapshot_interval_dangerous": { + "type": "boolean", + "title": "Session Snapshot Interval Dangerous" + }, + "sbfd": { + "type": "object", + "properties": { + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "protocols": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "initiator_interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Initiator Interval" + }, + "initiator_multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Initiator Multiplier" + }, + "initiator_measurement_round_trip": { + "type": "boolean", + "description": "Enable round-trip delay measurement.", + "title": "Initiator Measurement Round Trip" + }, + "reflector": { + "type": "object", + "properties": { + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "local_discriminator": { + "type": "string", + "description": "IPv4 address or 32 bit integer.", + "title": "Local Discriminator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reflector" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SBFD" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router BFD" + }, + "router_bgp": { + "type": "object", + "properties": { + "as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "As" + }, + "as_notation": { + "title": "ASN Notation", + "type": "string", + "description": "BGP AS can be deplayed in the asplain <1-4294967295> or asdot notation \"<1-65535>.<0-65535>\". This flag indicates which mode is preferred - asplain is the default.", + "enum": [ + "asdot", + "asplain" + ] + }, + "router_id": { + "type": "string", + "description": "In IP address format A.B.C.D.", + "title": "Router ID" + }, + "distance": { + "type": "object", + "properties": { + "external_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "External Routes" + }, + "internal_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Internal Routes" + }, + "local_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Local Routes" + } + }, + "required": [ + "external_routes", + "internal_routes", + "local_routes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distance" + }, + "graceful_restart": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_time": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Number of seconds.", + "title": "Restart Time" + }, + "stalepath_time": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Number of seconds.", + "title": "Stalepath Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart" + }, + "graceful_restart_helper": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_time": { + "type": "integer", + "minimum": 1, + "maximum": 100000000, + "description": "Number of seconds\ngraceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", + "title": "Restart Time" + }, + "long_lived": { + "type": "boolean", + "description": "graceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", + "title": "Long Lived" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart Helper" + }, + "maximum_paths": { + "type": "object", + "properties": { + "paths": { + "type": "integer", + "minimum": 1, + "maximum": 600, + "title": "Paths" + }, + "ecmp": { + "type": "integer", + "minimum": 1, + "maximum": 600, + "title": "ECMP" + } + }, + "required": [ + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Maximum Paths" + }, + "updates": { + "type": "object", + "properties": { + "wait_for_convergence": { + "type": "boolean", + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", + "title": "Wait For Convergence" + }, + "wait_install": { + "type": "boolean", + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", + "title": "Wait Install" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Updates" + }, + "bgp_cluster_id": { + "type": "string", + "description": "IP Address A.B.C.D.", + "title": "BGP Cluster ID" + }, + "bgp_defaults": { + "type": "array", + "description": "BGP command as string.", + "items": { + "type": "string" + }, + "title": "BGP Defaults" + }, + "bgp": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "ipv4_unicast": { + "type": "boolean", + "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors (EOS default = True).", + "title": "IPv4 Unicast" + }, + "ipv4_unicast_transport_ipv6": { + "type": "boolean", + "description": "Default activation of IPv4 unicast address-family on all IPv6 neighbors (EOS default == False).", + "title": "IPv4 Unicast Transport IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "route_reflector_preserve_attributes": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Reflector Preserve Attributes" + }, + "bestpath": { + "type": "object", + "properties": { + "d_path": { + "type": "boolean", + "title": "D Path" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Bestpath" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "listen_ranges": { + "type": "array", + "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "peer_id_include_router_id": { + "type": "boolean", + "description": "Include router ID as part of peer filter.", + "title": "Peer ID Include Router ID" + }, + "peer_group": { + "type": "string", + "description": "Peer group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `peer_filter` or `remote_as` is required but mutually exclusive.\nIf both are defined, `peer_filter` takes precedence\n", + "title": "Peer Filter" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Listen Ranges" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "peer_group": { + "type": "string", + "title": "Peer Group" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "description": { + "type": "string", + "title": "Description" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "update_source": { + "type": "string", + "description": "Source Interface.", + "title": "Update Source" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "description": "Number of local ASNs allowed in a BGP update.", + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_group": { + "type": "string", + "default": "Peer-group name", + "title": "Peer Group" + }, + "description": { + "type": "string", + "title": "Description" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.", + "title": "Peer Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Neighbor Interfaces" + }, + "aggregate_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "advertise_only": { + "type": "boolean", + "title": "Advertise Only" + }, + "as_set": { + "type": "boolean", + "title": "As Set" + }, + "summary_only": { + "type": "boolean", + "title": "Summary Only" + }, + "attribute_map": { + "type": "string", + "description": "Route-map name.", + "title": "Attribute Map" + }, + "match_map": { + "type": "string", + "description": "Route-map name.", + "title": "Match Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Aggregate Addresses" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + }, + "vlan_aware_bundles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VLAN aware bundle name.", + "title": "Name" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "description": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Description" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + }, + "vlan": { + "type": "string", + "description": "VLAN range as string. Example \"100-200,300\".", + "title": "VLAN" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN-aware-bundle definition in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VLAN Aware Bundles" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", + "title": "EOS CLI" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vpws": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VPWS instance name.", + "title": "Name" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "route_targets": { + "type": "object", + "properties": { + "import_export": { + "type": "string", + "description": "Route Target.", + "title": "Import Export" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "mpls_control_word": { + "type": "boolean", + "title": "MPLS Control Word" + }, + "label_flow": { + "type": "boolean", + "title": "Label Flow" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "pseudowires": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Pseudowire name.", + "title": "Name" + }, + "id_local": { + "type": "integer", + "description": "Must match id_remote on other pe.", + "title": "ID Local" + }, + "id_remote": { + "type": "integer", + "description": "Must match id_local on other pe.", + "title": "ID Remote" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Pseudowires" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Vpws" + }, + "address_family_evpn": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "neighbor_default": { + "type": "object", + "properties": { + "encapsulation": { + "type": "string", + "enum": [ + "vxlan", + "mpls" + ], + "title": "Encapsulation" + }, + "next_hop_self_source_interface": { + "description": "Source interface name.", + "type": "string", + "title": "Next Hop Self Source Interface" + }, + "next_hop_self_received_evpn_routes": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "inter_domain": { + "type": "boolean", + "title": "Inter Domain" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop Self Received EVPN Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default" + }, + "next_hop_mpls_resolution_ribs": { + "type": "array", + "minItems": 1, + "maxItems": 3, + "description": "Specify the RIBs used to resolve MPLS next-hops. The order of this list determines the order of RIB lookups.", + "items": { + "type": "object", + "properties": { + "rib_type": { + "type": "string", + "enum": [ + "system-connected", + "tunnel-rib-colored", + "tunnel-rib" + ], + "description": "Type of RIB. For 'tunnel-rib', use 'rib_name' to specify the name of the Tunnel-RIB to use.", + "title": "Rib Type" + }, + "rib_name": { + "type": "string", + "description": "The name of the tunnel-rib to use when using 'tunnel-rib' type.", + "title": "Rib Name" + } + }, + "required": [ + "rib_type" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Next Hop MPLS Resolution Ribs" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + }, + "domain_remote": { + "type": "boolean", + "title": "Domain Remote" + }, + "encapsulation": { + "type": "string", + "enum": [ + "vxlan", + "mpls" + ], + "title": "Encapsulation" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "evpn_hostflap_detection": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "window": { + "type": "integer", + "description": "Time (in seconds) to detect a MAC duplication issue.", + "minimum": 0, + "maximum": 4294967295, + "title": "Window" + }, + "threshold": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "Minimum number of MAC moves that indicate a MAC Duplication issue.", + "title": "Threshold" + }, + "expiry_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "Time (in seconds) to purge a MAC duplication issue.", + "title": "Expiry Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Hostflap Detection" + }, + "next_hop": { + "type": "object", + "properties": { + "resolution_disabled": { + "type": "boolean", + "title": "Resolution Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + }, + "import_ethernet_segment_ip_mass_withdraw": { + "type": "boolean", + "title": "Import Ethernet Segment IP Mass Withdraw" + }, + "import_overlay_index_gateway": { + "type": "boolean", + "title": "Import Overlay Index Gateway" + }, + "export_ethernet_segment_ip_mass_withdraw": { + "type": "boolean", + "title": "Export Ethernet Segment IP Mass Withdraw" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "bgp_additional_paths": { + "type": "object", + "description": "BGP additional-paths commands.", + "properties": { + "receive": { + "type": "boolean", + "description": "Receive multiple paths.", + "title": "Receive" + }, + "send": { + "type": "object", + "description": "Send multiple paths.", + "properties": { + "any": { + "type": "boolean", + "description": "Any eligible path.", + "title": "Any" + }, + "backup": { + "type": "boolean", + "description": "Best path and installed backup path.", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "description": "All paths in best path ECMP group.", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP Additional Paths" + }, + "layer_2_fec_in_place_update": { + "type": "object", + "description": "BGP layer-2 in-place FEC operation.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "description": "In-place FEC update tracking timeout in seconds.", + "minimum": 0, + "maximum": 300, + "title": "Timeout" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Layer 2 Fec In Place Update" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family EVPN" + }, + "address_family_rtc": { + "type": "object", + "properties": { + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "default_route_target": { + "type": "object", + "properties": { + "only": { + "type": "boolean", + "title": "Only" + }, + "encoding_origin_as_omit": { + "type": "string", + "title": "Encoding Origin As Omit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Rtc" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "type": "string", + "title": "Prefix" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "originate": { + "type": "boolean", + "title": "Originate" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv6_originate": { + "type": "boolean", + "title": "Address Family IPv6 Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Prefix-list name.", + "title": "Prefix List Out" + }, + "default_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv4_multicast": { + "type": "object", + "properties": { + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Multicast" + }, + "address_family_ipv4_sr_te": { + "type": "object", + "properties": { + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Sr Te" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "type": "string", + "title": "Prefix" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly used if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv6_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Multicast" + }, + "address_family_ipv6_sr_te": { + "type": "object", + "properties": { + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Sr Te" + }, + "address_family_link_state": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "path_selection": { + "type": "object", + "properties": { + "roles": { + "type": "object", + "properties": { + "producer": { + "type": "boolean", + "title": "Producer" + }, + "consumer": { + "type": "boolean", + "title": "Consumer" + }, + "propagator": { + "type": "boolean", + "title": "Propagator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Roles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Path Selection" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Link State" + }, + "address_family_flow_spec_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv4" + }, + "address_family_flow_spec_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv6" + }, + "address_family_path_selection": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Path Selection" + }, + "address_family_vpn_ipv4": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_default_encapsulation_mpls_next_hop_self": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default Encapsulation MPLS Next Hop Self" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family VPN IPv4" + }, + "address_family_vpn_ipv6": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_default_encapsulation_mpls_next_hop_self": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default Encapsulation MPLS Next Hop Self" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family VPN IPv6" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + }, + "evpn_multicast": { + "type": "boolean", + "title": "EVPN Multicast" + }, + "evpn_multicast_address_family": { + "type": "object", + "description": "Enable per-AF EVPN multicast settings.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "transit": { + "type": "boolean", + "description": "Enable EVPN multicast transit mode.", + "title": "Transit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Multicast Address Family" + }, + "evpn_multicast_gateway_dr_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "description": "DR election algorithms:\n hrw: Default selection based on highest random weight.\n modulus: Selection based on VLAN ID modulo number of candidates.\n preference: Selection based on a configured preference value.", + "enum": [ + "hrw", + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "description": "Required when `algorithm` is `preference`.", + "minimum": 0, + "maximum": 65535, + "title": "Preference Value" + } + }, + "required": [ + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Multicast Gateway DR Election" + }, + "default_route_exports": { + "type": "array", + "description": "Enable default-originate per VRF/address-family.", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "enum": [ + "evpn", + "vpn-ipv4", + "vpn-ipv6" + ], + "title": "Address Family" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Default Route Exports" + }, + "route_targets": { + "type": "object", + "properties": { + "import": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "route_targets": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Route Targets" + }, + "route_map": { + "type": "string", + "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "RCF" + }, + "vpn_route_filter_rcf": { + "type": "string", + "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", + "title": "VPN Route Filter RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "route_targets": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Route Targets" + }, + "route_map": { + "type": "string", + "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "RCF" + }, + "vpn_route_filter_rcf": { + "type": "string", + "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", + "title": "VPN Route Filter RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Export" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "router_id": { + "description": "in IP address format A.B.C.D.", + "type": "string", + "title": "Router ID" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "updates": { + "type": "object", + "properties": { + "wait_for_convergence": { + "type": "boolean", + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", + "title": "Wait For Convergence" + }, + "wait_install": { + "type": "boolean", + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", + "title": "Wait Install" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Updates" + }, + "listen_ranges": { + "type": "array", + "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "peer_id_include_router_id": { + "type": "boolean", + "description": "Include router ID as part of peer filter.", + "title": "Peer ID Include Router ID" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `peer_filter`` or `remote_as` is required but mutually exclusive.\nIf both are defined, peer_filter takes precedence.\n", + "title": "Peer Filter" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Listen Ranges" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "description": { + "type": "string", + "title": "Description" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "description": "Number of local ASNs allowed in a BGP update.", + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "update_source": { + "type": "string", + "title": "Update Source" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_in or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_in instead.", + "deprecated": true, + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_out or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_out instead.", + "deprecated": true, + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.", + "title": "Peer Filter" + }, + "description": { + "type": "string", + "title": "Description" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Neighbor Interfaces" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + }, + "aggregate_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "advertise_only": { + "type": "boolean", + "title": "Advertise Only" + }, + "as_set": { + "type": "boolean", + "title": "As Set" + }, + "summary_only": { + "type": "boolean", + "title": "Summary Only" + }, + "attribute_map": { + "type": "string", + "title": "Attribute Map" + }, + "match_map": { + "type": "string", + "title": "Match Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Aggregate Addresses" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "originate": { + "type": "boolean", + "title": "Originate" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dhcp", + "dynamic", + "isis", + "ospfv3", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv4_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A.B.C.D/E\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Multicast" + }, + "address_family_ipv6_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Multicast" + }, + "address_family_flow_spec_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv4" + }, + "address_family_flow_spec_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv6" + }, + "address_families": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6_originate": { + "type": "boolean", + "title": "Address Family IPv6 Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Address Families" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "session_trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of session tracker.", + "title": "Name" + }, + "recovery_delay": { + "type": "integer", + "description": "Recovery delay in seconds.", + "minimum": 1, + "maximum": 3600, + "title": "Recovery Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Session Trackers" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router BGP" + }, + "router_general": { + "type": "object", + "title": "Router General configuration", + "properties": { + "router_id": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "description": "IPv4 Address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "IPv6 Address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ID" + }, + "nexthop_fast_failover": { + "type": "boolean", + "default": false, + "title": "Nexthop Fast Failover" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Destination-VRF.", + "title": "Name" + }, + "leak_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_vrf": { + "type": "string", + "title": "Source VRF" + }, + "subscribe_policy": { + "type": "string", + "description": "Route-Map Policy.", + "title": "Subscribe Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Leak Routes" + }, + "routes": { + "type": "object", + "properties": { + "dynamic_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Dynamic Prefix List Name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "control_functions": { + "type": "object", + "description": "Routing control functions (RCF) used to filter and update routes from a peer or during redistributions.\nWarning:\nThis configuration cannot be pushed with `eos_config_deploy_eapi`, because of limitations in `arista.eos` and `ansible.netcommon` plugins.\nThe configuration can be pushed via CloudVision with `eos_config_deploy_cvp` or `cv_deploy`.", + "properties": { + "code_units": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the code unit.", + "title": "Name" + }, + "content": { + "type": "string", + "description": "Content of route control function.\ne.g.\nfunction ACCEPT_ALL() {\n return true;\n }\nEOF", + "title": "Content" + } + }, + "required": [ + "content", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Code Units" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Functions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_igmp": { + "type": "object", + "title": "Router IGMP Configuration", + "properties": { + "host_proxy_match_mroute": { + "type": "string", + "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", + "enum": [ + "all", + "iif" + ], + "title": "Host Proxy Match Mroute" + }, + "ssm_aware": { + "type": "boolean", + "title": "Ssm Aware" + }, + "vrfs": { + "type": "array", + "description": "Configure IGMP in a VRF.\nVRF 'default' is not supported in EOS, please see keys directly under 'router_igmp'.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "host_proxy_match_mroute": { + "type": "string", + "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", + "enum": [ + "all", + "iif" + ], + "title": "Host Proxy Match Mroute" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_internet_exit": { + "type": "object", + "description": "Internet-exit feature to configure internet bound service for virtual topologies.", + "properties": { + "policies": { + "type": "array", + "description": "Internet-exit policy represent a policy which can be attached to a virtual topology profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "exit_groups": { + "type": "array", + "description": "The exit groups that are configured under a policy are strictly ordered, meaning an exit group appearing first has more priority than the exit group that follows it.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Exit Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "exit_groups": { + "type": "array", + "description": "Exit groups represent a group of exit options (connections).\nTraffic flows are load balanced in a round robin fashion across all the members (exits) of the exit-group.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "fib_default": { + "type": "boolean", + "description": "Fib default exit indicates that the flows that select this exit will follow the default route available in the VRF of the flow.", + "title": "Fib Default" + }, + "local_connections": { + "type": "array", + "description": "Local connections refer to connections configured under the `router_service_insertion`.\nThe service-insertion module reports the health of the connection and the exit will qualify for use only when it is healthy.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Local Connections" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exit Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Internet Exit" + }, + "router_isis": { + "type": "object", + "properties": { + "instance": { + "type": "string", + "description": "ISIS Instance Name.", + "title": "Instance" + }, + "net": { + "type": "string", + "description": "CLNS Address like \"49.0001.0001.0000.0001.00\".", + "title": "Net" + }, + "router_id": { + "type": "string", + "description": "IPv4 Address.", + "title": "Router ID" + }, + "is_type": { + "title": "IS Type", + "type": "string", + "enum": [ + "level-1", + "level-1-2", + "level-2" + ] + }, + "log_adjacency_changes": { + "type": "boolean", + "title": "Log Adjacency Changes" + }, + "mpls_ldp_sync_default": { + "type": "boolean", + "title": "MPLS LDP Sync Default" + }, + "timers": { + "type": "object", + "properties": { + "local_convergence": { + "type": "object", + "properties": { + "protected_prefixes": { + "type": "boolean", + "title": "Protected Prefixes" + }, + "delay": { + "type": "integer", + "default": 10000, + "description": "Delay in milliseconds.", + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Convergence" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "set_overload_bit": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "on_startup": { + "type": "object", + "properties": { + "delay": { + "type": "integer", + "description": "Number of seconds.", + "title": "Delay" + }, + "wait_for_bgp": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "description": "Number of seconds.", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wait For BGP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "On Startup" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set Overload Bit" + }, + "authentication": { + "type": "object", + "properties": { + "both": { + "type": "object", + "description": "Authentication settings for level-1 and level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Both" + }, + "level_1": { + "type": "object", + "description": "Authentication settings for level-1. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Level 1" + }, + "level_2": { + "type": "object", + "description": "Authentication settings for level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Level 2" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication" + }, + "advertise": { + "type": "object", + "properties": { + "passive_only": { + "type": "boolean", + "title": "Passive Only" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertise" + }, + "address_family": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "ipv4 unicast", + "ipv6 unicast" + ], + "description": "Address Family.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4.enabled or address_family_ipv6.enabled instead.", + "deprecated": true + }, + "title": "Address Family" + }, + "isis_af_defaults": { + "type": "array", + "items": { + "type": "string", + "description": "EOS CLI rendered under the address families.\nExample \"maximum-paths 64\"\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4/address_family_ipv6 instead.", + "deprecated": true + }, + "title": "ISIS AF Defaults" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "bgp", + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external" + ], + "description": "ospf_route_type is required with source_protocols 'ospf' and 'ospfv3'.", + "title": "OSPF Route Type" + } + }, + "required": [ + "source_protocol" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Redistribute Routes" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, + "fast_reroute_ti_lfa": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "link-protection", + "node-protection" + ], + "title": "Mode" + }, + "level": { + "type": "string", + "enum": [ + "level-1", + "level-2" + ], + "title": "Level" + }, + "srlg": { + "type": "object", + "description": "Shared Risk Link Group.", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "strict": { + "type": "boolean", + "title": "Strict" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SRLG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fast Reroute TI LFA" + }, + "tunnel_source_labeled_unicast": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "Route Control Function.", + "title": "RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tunnel Source Labeled Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, + "fast_reroute_ti_lfa": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "link-protection", + "node-protection" + ], + "title": "Mode" + }, + "level": { + "type": "string", + "enum": [ + "level-1", + "level-2" + ], + "description": "Optional, default is to protect all levels.", + "title": "Level" + }, + "srlg": { + "type": "object", + "description": "Shared Risk Link Group.", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "strict": { + "type": "boolean", + "title": "Strict" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SRLG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fast Reroute TI LFA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "segment_routing_mpls": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "router_id": { + "type": "string", + "title": "Router ID" + }, + "prefix_segments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "title": "Prefix" + }, + "index": { + "type": "integer", + "title": "Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix Segments" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Segment Routing MPLS" + }, + "spf_interval": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Maximum interval between two SPFs in seconds or milliseconds.\nRange in seconds: <1-300>\nRange in milliseconds: <1-300000>", + "title": "Interval" + }, + "interval_unit": { + "type": "string", + "enum": [ + "seconds", + "milliseconds" + ], + "description": "If interval unit is not defined EOS takes `seconds` by default.", + "title": "Interval Unit" + }, + "wait_interval": { + "type": "integer", + "minimum": 1, + "maximum": 300000, + "description": "Initial wait interval for SPF in milliseconds.", + "title": "Wait Interval" + }, + "hold_interval": { + "type": "integer", + "minimum": 1, + "maximum": 300000, + "description": "Hold interval between the first and second SPF runs in milliseconds.", + "title": "Hold Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SPF Interval" + }, + "graceful_restart": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_hold_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Number of seconds.", + "title": "Restart Hold Time" + }, + "t2": { + "type": "object", + "properties": { + "level_1_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-1 LSP database sync wait time in seconds.", + "title": "Level 1 Wait Time" + }, + "level_2_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-2 LSP database sync wait time in seconds.", + "title": "Level 2 Wait Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "T2" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the router isis in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "required": [ + "instance" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ISIS" + }, + "router_l2_vpn": { + "type": "object", + "properties": { + "arp_learning_bridged": { + "type": "boolean", + "title": "ARP Learning Bridged" + }, + "arp_proxy": { + "type": "object", + "properties": { + "prefix_list": { + "type": "string", + "description": "Prefix-list name. ARP Proxying is disabled for IPv4 addresses defined in the prefix-list.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ARP Proxy" + }, + "arp_selective_install": { + "type": "boolean", + "title": "ARP Selective Install" + }, + "nd_learning_bridged": { + "type": "boolean", + "title": "ND Learning Bridged" + }, + "nd_proxy": { + "type": "object", + "properties": { + "prefix_list": { + "type": "string", + "description": "Prefix-list name. Neighbor Discovery Proxying is disabled for IPv6 addresses defined in the prefix-list.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ND Proxy" + }, + "nd_rs_flooding_disabled": { + "type": "boolean", + "title": "ND RS Flooding Disabled" + }, + "virtual_router_nd_ra_flooding_disabled": { + "type": "boolean", + "title": "Virtual Router ND RA Flooding Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router L2 VPN" + }, + "router_msdp": { + "type": "object", + "properties": { + "originator_id_local_interface": { + "type": "string", + "description": "Interface to use for originator ID.", + "title": "Originator ID Local Interface" + }, + "rejected_limit": { + "type": "integer", + "description": "Maximum number of rejected SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Rejected Limit" + }, + "forward_register_packets": { + "type": "boolean", + "title": "Forward Register Packets" + }, + "connection_retry_interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Connection Retry Interval" + }, + "group_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "type": "string", + "description": "Source address prefix.", + "title": "Source Prefix" + }, + "limit": { + "type": "integer", + "description": "Limit for SAs matching the source address prefix.", + "minimum": 0, + "maximum": 40000, + "title": "Limit" + } + }, + "required": [ + "limit", + "source_prefix" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Group Limits" + }, + "peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "Peer IP Address.", + "title": "IPv4 Address" + }, + "default_peer": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "prefix_list": { + "type": "string", + "description": "Prefix list to filter source of SA messages.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Peer" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "description": { + "type": "string", + "title": "Description" + }, + "disabled": { + "type": "boolean", + "description": "Disable the MSDP peer.", + "title": "Disabled" + }, + "sa_limit": { + "type": "integer", + "description": "Maximum number of SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Sa Limit" + }, + "mesh_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Mesh group name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Mesh Groups" + }, + "keepalive": { + "type": "object", + "properties": { + "keepalive_timer": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Keepalive Timer" + }, + "hold_timer": { + "type": "integer", + "description": "Must be greater than keepalive timer.", + "minimum": 1, + "maximum": 65535, + "title": "Hold Timer" + } + }, + "required": [ + "keepalive_timer", + "hold_timer" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + }, + "sa_filter": { + "type": "object", + "properties": { + "in_list": { + "type": "string", + "description": "ACL to filter inbound SA messages.", + "title": "In List" + }, + "out_list": { + "type": "string", + "description": "ACL to filter outbound SA messages.", + "title": "Out List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_address" + ] + }, + "title": "Peers" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "originator_id_local_interface": { + "type": "string", + "description": "Interface to use for originator ID.", + "title": "Originator ID Local Interface" + }, + "rejected_limit": { + "type": "integer", + "description": "Maximum number of rejected SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Rejected Limit" + }, + "forward_register_packets": { + "type": "boolean", + "title": "Forward Register Packets" + }, + "connection_retry_interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Connection Retry Interval" + }, + "group_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "type": "string", + "description": "Source address prefix.", + "title": "Source Prefix" + }, + "limit": { + "type": "integer", + "description": "Limit for SAs matching the source address prefix.", + "minimum": 0, + "maximum": 40000, + "title": "Limit" + } + }, + "required": [ + "limit", + "source_prefix" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Group Limits" + }, + "peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "Peer IP Address.", + "title": "IPv4 Address" + }, + "default_peer": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "prefix_list": { + "type": "string", + "description": "Prefix list to filter source of SA messages.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Peer" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "description": { + "type": "string", + "title": "Description" + }, + "disabled": { + "type": "boolean", + "description": "Disable the MSDP peer.", + "title": "Disabled" + }, + "sa_limit": { + "type": "integer", + "description": "Maximum number of SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Sa Limit" + }, + "mesh_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Mesh group name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Mesh Groups" + }, + "keepalive": { + "type": "object", + "properties": { + "keepalive_timer": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Keepalive Timer" + }, + "hold_timer": { + "type": "integer", + "description": "Must be greater than keepalive timer.", + "minimum": 1, + "maximum": 65535, + "title": "Hold Timer" + } + }, + "required": [ + "keepalive_timer", + "hold_timer" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + }, + "sa_filter": { + "type": "object", + "properties": { + "in_list": { + "type": "string", + "description": "ACL to filter inbound SA messages.", + "title": "In List" + }, + "out_list": { + "type": "string", + "description": "ACL to filter outbound SA messages.", + "title": "Out List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_address" + ] + }, + "title": "Peers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Msdp" + }, + "router_multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "activity_polling_interval": { + "type": "integer", + "minimum": 1, + "maximum": 60, + "description": "MFIB entry activity polling interval.", + "title": "Activity Polling Interval" + }, + "counters": { + "type": "object", + "properties": { + "rate_period_decay": { + "description": "Rate in seconds.", + "type": "integer", + "minimum": 0, + "maximum": 600, + "title": "Rate Period Decay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Counters" + }, + "routing": { + "type": "boolean", + "title": "Routing" + }, + "multipath": { + "type": "string", + "enum": [ + "none", + "deterministic", + "deterministic color", + "deterministic router-id" + ], + "title": "Multipath" + }, + "software_forwarding": { + "type": "string", + "enum": [ + "kernel", + "sfe" + ], + "title": "Software Forwarding" + }, + "rpf": { + "type": "object", + "properties": { + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "description": "Source address A.B.C.D or Source prefix A.B.C.D/E.", + "type": "string", + "title": "Source Prefix" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nexthop": { + "description": "Next-hop IP address or interface name.", + "type": "string", + "title": "Nexthop" + }, + "distance": { + "description": "Administrative distance for this route.", + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "nexthop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Destinations" + } + }, + "required": [ + "source_prefix", + "destinations" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rpf" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "activity_polling_interval": { + "type": "integer", + "minimum": 1, + "maximum": 60, + "description": "MFIB entry activity polling interval.", + "title": "Activity Polling Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "ipv4": { + "type": "object", + "properties": { + "routing": { + "type": "boolean", + "title": "Routing" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Multicast" + }, + "router_ospf": { + "type": "object", + "title": "Router OSPF Configuration", + "properties": { + "process_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "OSPF Process ID.", + "title": "ID" + }, + "vrf": { + "type": "string", + "description": "VRF Name for OSPF Process.", + "title": "VRF" + }, + "passive_interface_default": { + "type": "boolean", + "title": "Passive Interface Default" + }, + "router_id": { + "type": "string", + "description": "IPv4 Address.", + "title": "Router ID" + }, + "distance": { + "type": "object", + "properties": { + "external": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "External" + }, + "inter_area": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Inter Area" + }, + "intra_area": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Intra Area" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distance" + }, + "log_adjacency_changes_detail": { + "type": "boolean", + "title": "Log Adjacency Changes Detail" + }, + "network_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_prefix": { + "type": "string", + "title": "IPv4 Prefix" + }, + "area": { + "type": "string", + "title": "Area" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_prefix" + ] + }, + "title": "Network Prefixes" + }, + "bfd_enable": { + "type": "boolean", + "title": "BFD Enable" + }, + "bfd_adjacency_state_any": { + "type": "boolean", + "title": "BFD Adjacency State Any" + }, + "no_passive_interfaces": { + "type": "array", + "items": { + "type": "string", + "description": "Interface Name." + }, + "title": "No Passive Interfaces" + }, + "distribute_list_in": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distribute List In" + }, + "max_lsa": { + "type": "integer", + "title": "Max LSA" + }, + "timers": { + "type": "object", + "properties": { + "lsa": { + "type": "object", + "properties": { + "rx_min_interval": { + "type": "integer", + "description": "Min interval in msecs between accepting the same LSA.", + "minimum": 0, + "maximum": 600000, + "title": "RX Min Interval" + }, + "tx_delay": { + "type": "object", + "properties": { + "initial": { + "type": "integer", + "description": "Delay to generate first occurrence of LSA in msecs.", + "minimum": 0, + "maximum": 600000, + "title": "Initial" + }, + "min": { + "type": "integer", + "description": "Min delay between originating the same LSA in msecs.", + "minimum": 1, + "maximum": 600000, + "title": "Min" + }, + "max": { + "type": "integer", + "description": "1-600000 Maximum delay between originating the same LSA in msec.", + "minimum": 1, + "maximum": 600000, + "title": "Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TX Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LSA" + }, + "spf_delay": { + "type": "object", + "properties": { + "initial": { + "type": "integer", + "description": "Initial SPF schedule delay in msecs.", + "minimum": 0, + "maximum": 600000, + "title": "Initial" + }, + "min": { + "type": "integer", + "description": "Min Hold time between two SPFs in msecs.", + "minimum": 0, + "maximum": 65535000, + "title": "Min" + }, + "max": { + "type": "integer", + "description": "Max wait time between two SPFs in msecs.", + "minimum": 0, + "maximum": 65535000, + "title": "Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SPF Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "default_information_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "metric": { + "type": "integer", + "description": "Metric for default route.", + "minimum": 1, + "maximum": 65535, + "title": "Metric" + }, + "metric_type": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "description": "OSPF metric type for default route.", + "title": "Metric Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Information Originate" + }, + "summary_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "Summary Prefix Address.", + "title": "Prefix" + }, + "tag": { + "type": "integer", + "title": "Tag" + }, + "attribute_map": { + "type": "string", + "title": "Attribute Map" + }, + "not_advertise": { + "type": "boolean", + "title": "Not Advertise" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Summary Addresses" + }, + "redistribute": { + "type": "object", + "properties": { + "static": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Static" + }, + "connected": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connected" + }, + "bgp": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redistribute" + }, + "auto_cost_reference_bandwidth": { + "type": "integer", + "description": "Bandwidth in mbps.", + "title": "Auto Cost Reference Bandwidth" + }, + "areas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "filter": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 Prefix." + }, + "title": "Networks" + }, + "prefix_list": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Filter" + }, + "type": { + "type": "string", + "enum": [ + "normal", + "stub", + "nssa" + ], + "default": "normal", + "title": "Type" + }, + "no_summary": { + "type": "boolean", + "title": "No Summary" + }, + "nssa_only": { + "type": "boolean", + "title": "Nssa Only" + }, + "default_information_originate": { + "type": "object", + "properties": { + "metric": { + "type": "integer", + "description": "Metric for default route.", + "minimum": 1, + "maximum": 65535, + "title": "Metric" + }, + "metric_type": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "description": "OSPF metric type for default route.", + "title": "Metric Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Information Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Areas" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "max_metric": { + "type": "object", + "properties": { + "router_lsa": { + "type": "object", + "properties": { + "external_lsa": { + "type": "object", + "properties": { + "override_metric": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "title": "Override Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "External LSA" + }, + "include_stub": { + "type": "boolean", + "title": "Include Stub" + }, + "on_startup": { + "type": "string", + "description": "\"wait-for-bgp\" or Integer 5-86400.\nExample: \"wait-for-bgp\" Or \"222\"\n", + "title": "On Startup" + }, + "summary_lsa": { + "type": "object", + "properties": { + "override_metric": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "title": "Override Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Summary LSA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router LSA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Max Metric" + }, + "mpls_ldp_sync_default": { + "type": "boolean", + "title": "MPLS LDP Sync Default" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router OSPF process ID in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Process IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_path_selection": { + "type": "object", + "description": "Dynamic path selection configuration.", + "properties": { + "peer_dynamic_source": { + "type": "string", + "enum": [ + "stun" + ], + "description": "Source of dynamic peer discovery.", + "title": "Peer Dynamic Source" + }, + "path_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path group name.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Path group ID.", + "minimum": 1, + "maximum": 65535, + "title": "ID" + }, + "ipsec_profile": { + "type": "string", + "description": "IPSec profile for the path group.", + "title": "Ipsec Profile" + }, + "flow_assignment": { + "type": "string", + "enum": [ + "lan" + ], + "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", + "title": "Flow Assignment" + }, + "local_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Local interface name.", + "pattern": "^Ethernet\\d+(/\\d+)*(\\.\\d+)?$", + "title": "Name" + }, + "public_address": { + "type": "string", + "description": "Public IP assigned by NAT.", + "title": "Public Address" + }, + "stun": { + "type": "object", + "properties": { + "server_profiles": { + "type": "array", + "minItems": 1, + "maxItems": 12, + "description": "STUN server-profile names.", + "items": { + "type": "string" + }, + "title": "Server Profiles" + } + }, + "required": [ + "server_profiles" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Interfaces" + }, + "local_ips": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "public_address": { + "type": "string", + "description": "Public IP assigned by NAT.", + "title": "Public Address" + }, + "stun": { + "type": "object", + "properties": { + "server_profiles": { + "type": "array", + "minItems": 1, + "maxItems": 12, + "description": "STUN server-profile names.", + "items": { + "type": "string" + }, + "title": "Server Profiles" + } + }, + "required": [ + "server_profiles" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Local Ips" + }, + "dynamic_peers": { + "type": "object", + "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable `peer dynamic`.", + "title": "Enabled" + }, + "ip_local": { + "type": "boolean", + "description": "Prefer local IP address.", + "title": "IP Local" + }, + "ipsec": { + "type": "boolean", + "description": "IPsec configuration for dynamic peers.", + "title": "Ipsec" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic Peers" + }, + "static_peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "router_ip": { + "type": "string", + "description": "Peer router IP.", + "title": "Router IP" + }, + "name": { + "type": "string", + "description": "Name of the site.", + "title": "Name" + }, + "ipv4_addresses": { + "type": "array", + "description": "Static IPv4 addresses.", + "items": { + "type": "string" + }, + "title": "IPv4 Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "router_ip" + ] + }, + "title": "Static Peers" + }, + "keepalive": { + "type": "object", + "properties": { + "auto": { + "type": "boolean", + "description": "Enable adaptive keepalive and feedback interval.", + "default": false, + "title": "Auto" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "minimum": 50, + "maximum": 60000, + "title": "Interval" + }, + "failure_threshold": { + "type": "integer", + "minimum": 2, + "maximum": 100, + "description": "Failure threshold in number of intervals. Required when `interval` is set.", + "title": "Failure Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Path Groups" + }, + "load_balance_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Load-balance policy name.", + "title": "Name" + }, + "lowest_hop_count": { + "type": "boolean", + "description": "Prefer paths with lowest hop-count.", + "title": "Lowest Hop Count" + }, + "jitter": { + "type": "integer", + "description": "Jitter requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Jitter" + }, + "latency": { + "type": "integer", + "description": "One way delay requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Latency" + }, + "loss_rate": { + "type": "string", + "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "title": "Loss Rate" + }, + "path_groups": { + "type": "array", + "description": "List of path-groups to use for this load balance policy.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path-group name.", + "title": "Name" + }, + "priority": { + "type": "integer", + "description": "Priority for this path-group.\nThe EOS default value is 1.", + "minimum": 1, + "maximum": 65535, + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Path Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Load Balance Policies" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "DPS policy name.", + "title": "Name" + }, + "default_match": { + "type": "object", + "properties": { + "load_balance": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Match" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Rule ID.", + "minimum": 1, + "maximum": 255, + "title": "ID" + }, + "application_profile": { + "type": "string", + "title": "Application Profile" + }, + "load_balance": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance" + } + }, + "required": [ + "application_profile", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Rules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "path_selection_policy": { + "type": "string", + "description": "DPS policy name to use for this VRF.", + "title": "Path Selection Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4_segment_size": { + "type": "string", + "description": "Segment Size for IPv4.\nCan be an integer in the range 64-65515 or \"auto\".\n\"auto\" will enable auto-discovery which clamps the TCP MSS value to the minimum of all the direct paths\nand multi-hop path MTU towards a remote VTEP (minus 40bytes to account for IP + TCP header).", + "title": "IPv4 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "ingress" + ], + "default": "ingress", + "description": "Enforce on packets through DPS tunnel for a specific direction.\nOnly 'ingress' direction is supported.", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Path Selection" + }, + "router_pim_sparse_mode": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "bfd": { + "type": "boolean", + "description": "Enable/Disable BFD.", + "title": "BFD" + }, + "ssm_range": { + "type": "string", + "description": "IPv4 Prefix associated with SSM.", + "title": "Ssm Range" + }, + "rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "RP Address.", + "title": "Address" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "access_lists": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Access Lists" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority" + }, + "hashmask": { + "type": "integer", + "minimum": 0, + "maximum": 32, + "title": "Hashmask" + }, + "override": { + "type": "boolean", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "RP Addresses" + }, + "anycast_rps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Anycast RP Address.", + "title": "Address" + }, + "other_anycast_rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Other Anycast RP Address.", + "title": "Address" + }, + "register_count": { + "type": "integer", + "title": "Register Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "Other Anycast RP Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "Anycast RPs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "ipv4": { + "type": "object", + "properties": { + "bfd": { + "type": "boolean", + "description": "Enable/Disable BFD.", + "title": "BFD" + }, + "rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "RP Address.", + "title": "Address" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "access_lists": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Access Lists" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority" + }, + "hashmask": { + "type": "integer", + "minimum": 0, + "maximum": 32, + "title": "Hashmask" + }, + "override": { + "type": "boolean", + "title": "Override" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "RP Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router PIM Sparse Mode" + }, + "router_segment_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "policies": { + "type": "array", + "description": "Customised application policies.\nUsing the Application Traffic Recognition L4 profiles, custom policies can be defined. The built-in application 'app-match-all' can be used to match any packets.\nNote that this is stateless, so both the source and destination flows need to be considered.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "minimum": 1, + "maximum": 1023, + "title": "Sequence" + }, + "application": { + "type": "string", + "description": "The name of the application.", + "title": "Application" + }, + "action": { + "type": "string", + "description": "The action to take - note that platform support for the redirect action is limited. The \"redirect\" action also requires the 'next_hop' to be configured.", + "enum": [ + "forward", + "drop", + "redirect" + ], + "title": "Action" + }, + "log": { + "type": "boolean", + "description": "Enable logging - note that platform support is limited.", + "title": "Log" + }, + "stateless": { + "type": "boolean", + "description": "Take action, regardless of state. Should be set to 'true' for MSS-G.", + "default": true, + "title": "Stateless" + }, + "next_hop": { + "type": "string", + "description": "When the action is 'redirect', this indicates the IPv4 next hop to redirect to.", + "title": "Next Hop" + } + }, + "required": [ + "application", + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "description": "The name of the VRF that the segments and policies are defined in.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "segments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Segment name.", + "title": "Name" + }, + "definition": { + "type": "object", + "properties": { + "interfaces": { + "type": "array", + "description": "The names of the source interface e.g. Port-Channel1 - note that platform support is limited.", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "match_lists": { + "type": "array", + "description": "The set of lists that define the segment. These can be a mix of IPv4 and IPv6 prefix or match lists.", + "maxItems": 2, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "description": "Indicate which address-family the match list belongs to e.g. ipv4 or ipv6.", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Address Family" + }, + "covered_prefix_list": { + "type": "string", + "description": "The name of the prefix-list. You can have a maximum of one per address-family. Mutually exclusive to the use of match_list. If both are configured prefix takes precedence.", + "title": "Covered Prefix List" + }, + "prefix": { + "type": "string", + "description": "The name of the match-list. You can have a maximum of one per address-family. Mutually exclusive to the use of covered_prefix_list. If both are configured prefix takes precedence.", + "title": "Prefix" + } + }, + "required": [ + "address_family" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Match Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Definition" + }, + "policies": { + "type": "array", + "description": "The policies controlling traffic into the segment.", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "The name of the source segment or 'forwarding-segments' for all segments.", + "title": "From" + }, + "policy": { + "type": "string", + "description": "The name of the policy to apply. The built-in policies are 'policy-forward-all' and 'policy-drop-all'.", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "from" + ] + }, + "title": "Policies" + }, + "fallback_policy": { + "type": "string", + "description": "Only supported on the R3 series platforms, this allows a per-segment default policy to be specified by name.", + "title": "Fallback Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Segments" + } + }, + "required": [ + "segments", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Segment Security" + }, + "router_service_insertion": { + "type": "object", + "description": "Configure network services inserted to data forwarding.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "connections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Connection name.", + "title": "Name" + }, + "ethernet_interface": { + "type": "object", + "description": "Outgoing physical interface or subinterface to use for the connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", + "properties": { + "name": { + "type": "string", + "description": "e.g. Ethernet2 or Ethernet2/2.2", + "title": "Name" + }, + "next_hop": { + "type": "string", + "description": "Next-hop IPv4 address (without mask).", + "title": "Next Hop" + } + }, + "required": [ + "name", + "next_hop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Interface" + }, + "tunnel_interface": { + "type": "object", + "description": "Outgoing tunnel interface(s) to use for this connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", + "properties": { + "primary": { + "type": "string", + "description": "e.g. Tunnel2", + "title": "Primary" + }, + "secondary": { + "type": "string", + "description": "e.g. Tunnel3", + "title": "Secondary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tunnel Interface" + }, + "monitor_connectivity_host": { + "type": "string", + "description": "Name of the host defined under `monitor_connectivity.hosts` used to derive the health of the connection.", + "title": "Monitor Connectivity Host" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Connections" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Service Insertion" + }, + "router_traffic_engineering": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "router_id": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ID" + }, + "segment_routing": { + "type": "object", + "properties": { + "colored_tunnel_rib": { + "type": "boolean", + "title": "Colored Tunnel Rib" + }, + "policy_endpoints": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "IPv4 or IPv6 address.", + "title": "Address" + }, + "colors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "title": "Value" + }, + "binding_sid": { + "type": "integer", + "title": "Binding Sid" + }, + "description": { + "type": "string", + "title": "Description" + }, + "name": { + "type": "string", + "title": "Name" + }, + "sbfd_remote_discriminator": { + "type": "string", + "description": "IPv4 address or 32 bit integer.", + "title": "SBFD Remote Discriminator" + }, + "path_group": { + "type": "array", + "items": { + "type": "object", + "properties": { + "preference": { + "type": "integer", + "title": "Preference" + }, + "explicit_null": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "ipv4 ipv6", + "none" + ], + "title": "Explicit Null" + }, + "segment_list": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label_stack": { + "type": "string", + "description": "Label Stack as string.\nExample: \"100 2000 30\"\n", + "title": "Label Stack" + }, + "weight": { + "type": "integer", + "title": "Weight" + }, + "index": { + "type": "integer", + "title": "Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Segment List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "value" + ] + }, + "title": "Colors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Policy Endpoints" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Segment Routing" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Traffic Engineering" + }, + "service_routing_configuration_bgp": { + "type": "object", + "properties": { + "no_equals_default": { + "type": "boolean", + "title": "No Equals Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Routing Configuration BGP" + }, + "service_routing_protocols_model": { + "type": "string", + "enum": [ + "multi-agent", + "ribd" + ], + "title": "Service Routing Protocols Model" + }, + "service_unsupported_transceiver": { + "type": "object", + "properties": { + "license_name": { + "type": "string", + "title": "License Name" + }, + "license_key": { + "type": "string", + "title": "License Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Unsupported Transceiver" + }, + "sflow": { + "type": "object", + "properties": { + "sample": { + "type": "integer", + "title": "Sample" + }, + "sample_input_subinterface": { + "type": "boolean", + "title": "Sample Input Subinterface" + }, + "sample_output_subinterface": { + "type": "boolean", + "title": "Sample Output Subinterface" + }, + "dangerous": { + "type": "boolean", + "title": "Dangerous" + }, + "polling_interval": { + "type": "integer", + "description": "Polling interval in seconds.", + "title": "Polling Interval" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "destination": { + "type": "string", + "description": "Sflow Destination IP Address.", + "title": "Destination" + }, + "port": { + "type": "integer", + "description": "Port Number", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "destination" + ] + }, + "title": "Destinations" + }, + "source": { + "type": "string", + "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", + "title": "Source" + }, + "source_interface": { + "type": "string", + "description": "Source Interface.", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "destination": { + "type": "string", + "description": "Sflow Destination IP Address.", + "title": "Destination" + }, + "port": { + "type": "integer", + "description": "Port Number.", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "destination" + ] + }, + "title": "Destinations" + }, + "source": { + "type": "string", + "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", + "title": "Source" + }, + "source_interface": { + "type": "string", + "description": "Source Interface.", + "title": "Source Interface" + }, + "extensions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Extension Name.", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "description": "Enable or Disable Extension.", + "title": "Enabled" + } + }, + "required": [ + "enabled", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Extensions" + }, + "interface": { + "type": "object", + "properties": { + "disable": { + "type": "object", + "properties": { + "default": { + "type": "boolean", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Disable" + }, + "egress": { + "type": "object", + "properties": { + "enable_default": { + "type": "boolean", + "description": "Enable egress sFlow by default.\n", + "title": "Enable Default" + }, + "unmodified": { + "type": "boolean", + "description": "Enable egress sFlow unmodified.\nPlatform dependent feature.\n", + "title": "Unmodified" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface" + }, + "run": { + "type": "boolean", + "title": "Run" + }, + "hardware_acceleration": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "modules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Modules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Acceleration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "snmp_server": { + "type": "object", + "description": "SNMP settings.", + "properties": { + "engine_ids": { + "type": "object", + "properties": { + "local": { + "type": "string", + "description": "Engine ID in hexadecimal.\n", + "title": "Local" + }, + "remotes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Remote engine ID in hexadecimal.\n", + "title": "ID" + }, + "address": { + "type": "string", + "description": "Hostname or IP of remote engine.\n", + "title": "Address" + }, + "udp_port": { + "type": "integer", + "title": "UDP Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Remotes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Engine IDs" + }, + "contact": { + "type": "string", + "description": "SNMP contact.", + "title": "Contact" + }, + "location": { + "type": "string", + "description": "SNMP location.", + "title": "Location" + }, + "communities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community name.", + "title": "Name" + }, + "access": { + "type": "string", + "enum": [ + "ro", + "rw" + ], + "title": "Access" + }, + "access_list_ipv4": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv4" + }, + "access_list_ipv6": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv6" + }, + "view": { + "type": "string", + "title": "View" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Communities" + }, + "ipv4_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv4 Acls" + }, + "ipv6_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Acls" + }, + "local_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Interfaces" + }, + "views": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "SNMP view name.", + "title": "Name" + }, + "mib_family_name": { + "type": "string", + "title": "MIB Family Name" + }, + "included": { + "type": "boolean", + "title": "Included" + }, + "MIB_family_name": { + "type": "string", + "title": "MIB Family Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Views" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "authentication": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication" + }, + "read": { + "type": "string", + "description": "Read view.", + "title": "Read" + }, + "write": { + "type": "string", + "description": "Write view.", + "title": "Write" + }, + "notify": { + "type": "string", + "description": "Notify view.", + "title": "Notify" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Groups" + }, + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Username.", + "title": "Name" + }, + "group": { + "type": "string", + "description": "Group name.", + "title": "Group" + }, + "remote_address": { + "type": "string", + "description": "Hostname or ip of remote engine.\nThe remote_address and udp_port are used for remote users.\n", + "title": "Remote Address" + }, + "udp_port": { + "type": "integer", + "description": "udp_port will not be used if no remote_address is configured.\n", + "title": "UDP Port" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "localized": { + "type": "string", + "description": "Engine ID in hexadecimal for localizing auth and/or priv.\n", + "title": "Localized" + }, + "auth": { + "type": "string", + "description": "Hash algorithm.\n", + "title": "Auth" + }, + "auth_passphrase": { + "type": "string", + "description": "Hashed authentication passphrase if localized is used else cleartext authentication passphrase.\n", + "title": "Auth Passphrase" + }, + "priv": { + "type": "string", + "description": "Encryption algorithm.\n", + "title": "Priv" + }, + "priv_passphrase": { + "type": "string", + "description": "Hashed privacy passphrase if localized is used else cleartext privacy passphrase.\n", + "title": "Priv Passphrase" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "version": { + "type": "string", + "enum": [ + "1", + "2c", + "3" + ], + "title": "Version" + }, + "community": { + "type": "string", + "description": "Community name.", + "title": "Community" + }, + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "Username" + }, + "authentication_level": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Hosts" + }, + "traps": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "default": false, + "description": "Enable or disable all snmp-traps.\n", + "title": "Enable" + }, + "snmp_traps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Snmp Traps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traps" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "enable": { + "type": "boolean", + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Snmp Server" + }, + "spanning_tree": { + "type": "object", + "properties": { + "root_super": { + "type": "boolean", + "title": "Root Super" + }, + "edge_port": { + "type": "object", + "properties": { + "bpdufilter_default": { + "type": "boolean", + "title": "Bpdufilter Default" + }, + "bpduguard_default": { + "type": "boolean", + "title": "Bpduguard Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Edge Port" + }, + "mode": { + "type": "string", + "enum": [ + "mstp", + "rstp", + "rapid-pvst", + "none" + ], + "title": "Mode" + }, + "bpduguard_rate_limit": { + "type": "object", + "properties": { + "default": { + "type": "boolean", + "title": "Default" + }, + "count": { + "type": "integer", + "description": "Maximum number of BPDUs per timer interval.", + "title": "Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Bpduguard Rate Limit" + }, + "rstp_priority": { + "type": "integer", + "title": "Rstp Priority" + }, + "mst": { + "type": "object", + "properties": { + "pvst_border": { + "type": "boolean", + "title": "Pvst Border" + }, + "configuration": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "revision": { + "type": "integer", + "description": "0-65535.", + "title": "Revision" + }, + "instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Instance ID.", + "title": "ID" + }, + "vlans": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18\n", + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Instances" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Configuration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mst" + }, + "mst_instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Instance ID.", + "title": "ID" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Mst Instances" + }, + "no_spanning_tree_vlan": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", + "title": "No Spanning Tree VLAN" + }, + "rapid_pvst_instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", + "title": "ID" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Rapid Pvst Instances" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Spanning Tree" + }, + "standard_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ip any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Standard Access Lists" + }, + "static_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "destination_address_prefix": { + "type": "string", + "description": "IPv4_network/Mask.", + "title": "Destination Address Prefix" + }, + "interface": { + "type": "string", + "title": "Interface" + }, + "gateway": { + "type": "string", + "description": "IPv4 Address.", + "title": "Gateway" + }, + "track_bfd": { + "type": "boolean", + "description": "Track next-hop using BFD.", + "title": "Track BFD" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + }, + "tag": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Tag" + }, + "name": { + "type": "string", + "description": "Description.", + "title": "Name" + }, + "metric": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Routes" + }, + "stun": { + "type": "object", + "description": "STUN configuration.", + "properties": { + "client": { + "type": "object", + "description": "STUN client settings.", + "properties": { + "server_profiles": { + "type": "array", + "description": "List of server profiles for the client.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "port": { + "type": "integer", + "description": "Destination port for the request STUN server (default - 3478).", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Server Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "server": { + "type": "object", + "description": "STUN server settings.", + "properties": { + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "local_interfaces": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Local Interfaces" + }, + "bindings_timeout": { + "type": "integer", + "description": "Timeout for bindings stored on STUN server in seconds.", + "minimum": 10, + "maximum": 7200, + "title": "Bindings Timeout" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "ssl_connection_lifetime": { + "type": "object", + "description": "SSL connection lifetime in minutes or hours.\nIf both are specified, minutes is given higher precedence.", + "properties": { + "minutes": { + "type": "integer", + "description": "SSL connection lifetime in minutes (default - 120).", + "minimum": 1, + "maximum": 1440, + "title": "Minutes" + }, + "hours": { + "type": "integer", + "description": "SSL connection lifetime in hours (default - 2).", + "minimum": 1, + "maximum": 24, + "title": "Hours" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SSL Connection Lifetime" + }, + "port": { + "type": "integer", + "description": "Listening port for STUN server (default - 3478).", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Server" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + }, + "switchport_default": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "routed", + "access" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "cos": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "COS" + }, + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "description": "VLAN ID.", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport Default" + }, + "switchport_port_security": { + "type": "object", + "properties": { + "mac_address": { + "type": "object", + "properties": { + "aging": { + "type": "boolean", + "title": "Aging" + }, + "moveable": { + "type": "boolean", + "title": "Moveable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "persistence_disabled": { + "type": "boolean", + "title": "Persistence Disabled" + }, + "violation_protect_chip_based": { + "type": "boolean", + "title": "Violation Protect Chip Based" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport Port Security" + }, + "sync_e": { + "type": "object", + "properties": { + "network_option": { + "type": "integer", + "minimum": 1, + "maximum": 2, + "title": "Network Option" + } + }, + "required": [ + "network_option" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "system": { + "type": "object", + "properties": { + "control_plane": { + "type": "object", + "properties": { + "tcp_mss": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment size.", + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment size.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss" + }, + "ipv4_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "acl_name": { + "type": "string", + "title": "Acl Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "acl_name" + ] + }, + "title": "IPv4 Access Groups" + }, + "ipv6_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "acl_name": { + "type": "string", + "title": "Acl Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "acl_name" + ] + }, + "title": "IPv6 Access Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Plane" + }, + "l1": { + "type": "object", + "properties": { + "unsupported_speed_action": { + "type": "string", + "enum": [ + "error", + "warn" + ], + "title": "Unsupported Speed Action" + }, + "unsupported_error_correction_action": { + "type": "string", + "enum": [ + "error", + "warn" + ], + "title": "Unsupported Error Correction Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "System" + }, + "tacacs_servers": { + "type": "object", + "properties": { + "timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "key": { + "type": "string", + "description": "Encrypted key.", + "title": "Key" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Key Type" + }, + "single_connection": { + "type": "boolean", + "title": "Single Connection" + }, + "timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Hosts" + }, + "policy_unknown_mandatory_attribute_ignore": { + "type": "boolean", + "title": "Policy Unknown Mandatory Attribute Ignore" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tacacs Servers" + }, + "tap_aggregation": { + "type": "object", + "properties": { + "mode": { + "type": "object", + "properties": { + "exclusive": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "profile": { + "description": "Profile Name.", + "type": "string", + "title": "Profile" + }, + "no_errdisable": { + "type": "array", + "items": { + "type": "string", + "description": "Interface name e.g Ethernet1, Port-Channel1." + }, + "title": "No Errdisable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exclusive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mode" + }, + "encapsulation_dot1br_strip": { + "type": "boolean", + "title": "Encapsulation dot1br Strip" + }, + "encapsulation_vn_tag_strip": { + "type": "boolean", + "title": "Encapsulation VN Tag Strip" + }, + "protocol_lldp_trap": { + "type": "boolean", + "title": "Protocol LLDP Trap" + }, + "truncation_size": { + "type": "integer", + "description": "Allowed truncation_size values vary depending on the platform.\n", + "title": "Truncation Size" + }, + "mac": { + "type": "object", + "properties": { + "timestamp": { + "type": "object", + "description": "mac.timestamp.replace_source_mac and mac.timestamp.header.format are mutually exclsuive. If both are defined, replace_source_mac takes precedence.\n", + "properties": { + "replace_source_mac": { + "type": "boolean", + "title": "Replace Source MAC" + }, + "header": { + "type": "object", + "properties": { + "format": { + "type": "string", + "enum": [ + "48-bit", + "64-bit" + ], + "title": "Format" + }, + "eth_type": { + "description": "EtherType.", + "type": "integer", + "title": "Eth Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Header" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timestamp" + }, + "fcs_append": { + "type": "boolean", + "description": "mac.fcs_append and mac.fcs_error are mutually exclusive. If both are defined, mac.fcs_append takes precedence.\n", + "title": "FCS Append" + }, + "fcs_error": { + "type": "string", + "enum": [ + "correct", + "discard", + "pass-through" + ], + "title": "FCS Error" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap Aggregation" + }, + "tcam_profile": { + "type": "object", + "title": "Hardware TCAM Profiles", + "properties": { + "system": { + "type": "string", + "description": "TCAM profile name to activate.\n", + "title": "System" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tcam-Profile Name.", + "title": "Name" + }, + "config": { + "type": "string", + "description": "TCAM Profile Config. Since these can be very long, it is often a good idea to import the config from a file.\nExample: \"{{ lookup('file', 'TCAM_TRAFFIC_POLICY.conf') }}\"\n", + "title": "Config" + }, + "source": { + "type": "string", + "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.\n", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "terminal": { + "type": "object", + "title": "Terminal Settings", + "properties": { + "length": { + "type": "integer", + "minimum": 0, + "maximum": 32767, + "title": "Length" + }, + "width": { + "type": "integer", + "minimum": 10, + "maximum": 32767, + "title": "Width" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of tracker object.", + "title": "Name" + }, + "interface": { + "type": "string", + "description": "Name of tracked interface.", + "title": "Interface" + }, + "tracked_property": { + "type": "string", + "default": "line-protocol", + "description": "Property to track.", + "title": "Tracked Property" + } + }, + "required": [ + "interface", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Trackers" + }, + "traffic_policies": { + "type": "object", + "properties": { + "options": { + "type": "object", + "properties": { + "counter_per_interface": { + "type": "boolean", + "title": "Counter Per Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Options" + }, + "field_sets": { + "type": "object", + "properties": { + "ipv4": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 Prefix Field Set Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 Prefix." + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4" + }, + "ipv6": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 Prefix Field Set Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IPv6 Prefix." + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv6" + }, + "ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "L4 Port Field Set Name.", + "title": "Name" + }, + "port_range": { + "type": "string", + "description": "Example: '10,20,80,440-450'", + "title": "Port Range" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Field Sets" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Traffic Policy Name.", + "title": "Name" + }, + "matches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Traffic Policy Item.", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Type" + }, + "source": { + "type": "object", + "properties": { + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or prefix." + }, + "title": "Prefixes" + }, + "prefix_lists": { + "type": "array", + "description": "Field-set prefix lists.", + "items": { + "type": "string" + }, + "title": "Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "destination": { + "type": "object", + "properties": { + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or prefix." + }, + "title": "Prefixes" + }, + "prefix_lists": { + "type": "array", + "description": "Field-set prefix lists.", + "items": { + "type": "string" + }, + "title": "Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "ttl": { + "type": "string", + "description": "TTL range.", + "title": "TTL" + }, + "fragment": { + "type": "object", + "description": "The 'fragment' command is not supported when 'source port'\nor 'destination port' command is configured.\n", + "properties": { + "offset": { + "type": "string", + "description": "Fragment offset range.", + "title": "Offset" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fragment" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "title": "Protocol" + }, + "src_port": { + "type": "string", + "description": "Port range.", + "title": "Src Port" + }, + "dst_port": { + "type": "string", + "description": "Port range.", + "title": "Dst Port" + }, + "src_field": { + "type": "string", + "description": "L4 port range field set.", + "title": "Src Field" + }, + "dst_field": { + "type": "string", + "description": "L4 port range field set.", + "title": "Dst Field" + }, + "flags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "established", + "initial" + ] + }, + "title": "Flags" + }, + "icmp_type": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ICMP Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "protocol" + ] + }, + "title": "Protocols" + }, + "actions": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Actions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Matches" + }, + "default_actions": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Actions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policies" + }, + "transceiver_qsfp_default_mode_4x10": { + "type": "boolean", + "default": true, + "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.\n", + "title": "Transceiver Qsfp Default Mode 4X10" + }, + "tunnel_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tunnel Interface Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "underlay_vrf": { + "type": "string", + "description": "Underlay VRF Name.", + "title": "Underlay VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "access_group_in": { + "description": "IPv4 ACL Name for ingress.", + "type": "string", + "title": "Access Group In" + }, + "access_group_out": { + "description": "IPv4 ACL Name for egress.", + "type": "string", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "description": "IPv6 ACL Name for ingress.", + "type": "string", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "description": "IPv6 ACL Name for egress.", + "type": "string", + "title": "IPv6 Access Group Out" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment Size for IPv4.", + "minimum": 64, + "maximum": 65495, + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment Size for IPv6.", + "minimum": 64, + "maximum": 65475, + "title": "IPv6" + }, + "direction": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.\n", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "tunnel_mode": { + "type": "string", + "enum": [ + "gre", + "ipsec" + ], + "description": "Tunnel encapsulation method.\n`gre`: Generic route encapsulation protocol,\n`ipsec`: IPsec-over-IP encapsulation.", + "title": "Tunnel Mode" + }, + "source_interface": { + "type": "string", + "description": "Tunnel Source Interface Name.", + "title": "Source Interface" + }, + "destination": { + "type": "string", + "description": "IPv4 or IPv6 Address Tunnel Destination.", + "title": "Destination" + }, + "path_mtu_discovery": { + "type": "boolean", + "description": "Enable Path MTU Discovery On Tunnel.", + "title": "Path MTU Discovery" + }, + "ipsec_profile": { + "type": "string", + "description": "Used only when `tunnel_mode` is set to `ipsec`.\nIt must target a defined IPsec profile.", + "title": "Ipsec Profile" + }, + "nat_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Nat Profile" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tunnel Interfaces" + }, + "virtual_source_nat_vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "ip_address": { + "type": "string", + "description": "IPv4 Address.", + "title": "IP Address" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 Address.", + "title": "IPv6 Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Virtual Source Nat VRFs" + }, + "vlan_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VLAN interface name like \"Vlan123\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "arp_aging_timeout": { + "type": "integer", + "description": "In seconds.", + "minimum": 1, + "maximum": 65535, + "title": "ARP Aging Timeout" + }, + "arp_cache_dynamic_capacity": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "ARP Cache Dynamic Capacity" + }, + "arp_gratuitous_accept": { + "type": "boolean", + "title": "ARP Gratuitous Accept" + }, + "arp_monitor_mac_address": { + "type": "boolean", + "title": "ARP Monitor MAC Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ip_directed_broadcast": { + "type": "boolean", + "title": "IP Directed Broadcast" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 address or IPv4_address/Mask." + }, + "title": "IP Virtual Router Addresses" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address Virtual" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_igmp": { + "type": "boolean", + "title": "IP IGMP" + }, + "ip_igmp_version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "title": "IP IGMP Version" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "ip_helpers": { + "type": "array", + "description": "List of DHCP servers.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IP address or hostname of DHCP server.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface used as source for forwarded DHCP packets.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF where DHCP server can be reached.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "IP DHCP Relay All Subnets" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_virtual_router_address": { + "type": "string", + "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", + "deprecated": true, + "title": "IPv6 Virtual Router Address" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", + "items": { + "type": "string", + "description": "IPv6 address or IPv6_address/Mask." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_other_config_flag": { + "type": "boolean", + "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", + "title": "IPv6 ND Other Config Flag" + }, + "ipv6_nd_cache": { + "type": "object", + "description": "IPv6 neighbor cache options.", + "properties": { + "dynamic_capacity": { + "type": "integer", + "description": "Capacity of dynamic cache entries.", + "minimum": 0, + "maximum": 4294967295, + "title": "Dynamic Capacity" + }, + "expire": { + "type": "integer", + "description": "Cache entries expirery in seconds.", + "minimum": 1, + "maximum": 65535, + "title": "Expire" + }, + "refresh_always": { + "type": "boolean", + "description": "Force refresh on cache expiry.", + "title": "Refresh Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 ND Cache" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "ipv6_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "IPv6 DHCP Relay All Subnets" + }, + "access_group_in": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group Out" + }, + "multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password used for simple authentication.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "description": "Keys used for message-digest authentication.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "no_autostate": { + "type": "boolean", + "title": "No Autostate" + }, + "vrrp_ids": { + "type": "array", + "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "vrrp": { + "type": "object", + "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", + "deprecated": true, + "properties": { + "virtual_router": { + "type": "string", + "description": "Virtual Router ID.", + "title": "Virtual Router" + }, + "priority": { + "type": "integer", + "description": "Instance priority.", + "title": "Priority" + }, + "advertisement_interval": { + "type": "integer", + "title": "Advertisement Interval" + }, + "preempt_delay_minimum": { + "type": "integer", + "title": "Preempt Delay Minimum" + }, + "ipv4": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VRRP" + }, + "ip_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Attached Host Route Export" + }, + "ipv6_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Administrative distance for generated routes.", + "title": "Distance" + }, + "prefix_length": { + "type": "integer", + "minimum": 0, + "maximum": 128, + "description": "Prefix length for generated routes.", + "title": "Prefix Length" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Attached Host Route Export" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Minimum RX hold time in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Name of policy-map used for policy based routing.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of VLANs as string.", + "title": "PVLAN Mapping" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Key only used for documentation or validation purposes.", + "title": "Tags" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VLAN Interfaces" + }, + "vlan_internal_order": { + "type": "object", + "properties": { + "allocation": { + "type": "string", + "enum": [ + "ascending", + "descending" + ], + "title": "Allocation" + }, + "range": { + "type": "object", + "properties": { + "beginning": { + "type": "integer", + "minimum": 2, + "maximum": 4094, + "description": "First VLAN ID.", + "title": "Beginning" + }, + "ending": { + "type": "integer", + "minimum": 2, + "maximum": 4094, + "description": "Last VLAN ID.", + "title": "Ending" + } + }, + "required": [ + "beginning", + "ending" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Range" + } + }, + "required": [ + "allocation", + "range" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VLAN Internal Order" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "name": { + "type": "string", + "description": "VLAN Name.", + "title": "Name" + }, + "state": { + "type": "string", + "enum": [ + "active", + "suspend" + ], + "title": "State" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Trunk Group Name." + }, + "title": "Trunk Groups" + }, + "private_vlan": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "community", + "isolated" + ], + "title": "Type" + }, + "primary_vlan": { + "type": "integer", + "description": "Primary VLAN ID.", + "title": "Primary VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Private VLAN" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vmtracer_sessions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Vmtracer Session Name.", + "title": "Name" + }, + "url": { + "type": "string", + "title": "URL" + }, + "username": { + "type": "string", + "title": "Username" + }, + "password": { + "type": "string", + "description": "Type 7 Password Hash.", + "title": "Password" + }, + "autovlan_disable": { + "type": "boolean", + "title": "Autovlan Disable" + }, + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VMTracer Sessions" + }, + "vrfs": { + "type": "array", + "description": "These keys are ignored if the name of the vrf is 'default'.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip_routing": { + "type": "boolean", + "title": "IP Routing" + }, + "ipv6_routing": { + "type": "boolean", + "title": "IPv6 Routing" + }, + "ip_routing_ipv6_interfaces": { + "type": "boolean", + "title": "IP Routing IPv6 Interfaces" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "vxlan_interface": { + "type": "object", + "properties": { + "Vxlan1": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "Description" + }, + "vxlan": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "description": "Source Interface Name.", + "title": "Source Interface" + }, + "multicast": { + "type": "object", + "properties": { + "headend_replication": { + "type": "boolean", + "title": "Headend Replication" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "controller_client": { + "type": "object", + "description": "Client to CVX Controllers.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Controller Client" + }, + "mlag_source_interface": { + "type": "string", + "title": "MLAG Source Interface" + }, + "udp_port": { + "type": "integer", + "title": "UDP Port" + }, + "vtep_to_vtep_bridging": { + "type": "boolean", + "description": "Enable bridging between different VTEPs in vxlan overlay.", + "title": "Vtep To Vtep Bridging" + }, + "virtual_router_encapsulation_mac_address": { + "type": "string", + "description": "\"mlag-system-id\" or ethernet_address (H.H.H).\n", + "title": "Virtual Router Encapsulation MAC Address" + }, + "bfd_vtep_evpn": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "prefix_list": { + "type": "string", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Vtep EVPN" + }, + "qos": { + "type": "object", + "description": "For the Traffic Class to be derived based on the outer DSCP field of the incoming VxLan packet, the core ports must be in \"DSCP Trust\" mode.\n!!!Warning, only few hardware types with software version >= 4.26.0 support the below knobs to configure Vxlan DSCP mapping.\n", + "properties": { + "dscp_propagation_encapsulation": { + "type": "boolean", + "title": "DSCP Propagation Encapsulation" + }, + "ecn_propagation": { + "type": "boolean", + "description": "Enable copying the ECN marking to/from encapsulated packets.\n", + "title": "Ecn Propagation" + }, + "map_dscp_to_traffic_class_decapsulation": { + "type": "boolean", + "title": "Map DSCP To Traffic Class Decapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "multicast_group": { + "type": "string", + "description": "IP Multicast Group Address.", + "title": "Multicast Group" + }, + "flood_vteps": { + "type": "array", + "items": { + "type": "string", + "description": "Remote VTEP IP Address." + }, + "title": "Flood Vteps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "multicast_group": { + "type": "string", + "description": "IP Multicast Group Address.", + "title": "Multicast Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "flood_vteps": { + "type": "array", + "items": { + "type": "string", + "description": "Remote VTEP IP Address." + }, + "title": "Flood Vteps" + }, + "flood_vtep_learned_data_plane": { + "type": "boolean", + "title": "Flood Vtep Learned Data Plane" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Vxlan1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN Interface" + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/virtual_source_nat_vrfs.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/virtual_source_nat_vrfs.schema.yml index 89b1a911468..8ff03cbf209 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/virtual_source_nat_vrfs.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/virtual_source_nat_vrfs.schema.yml @@ -22,3 +22,6 @@ keys: ip_address: type: str description: IPv4 Address. + ipv6_address: + type: str + description: IPv6 Address. diff --git a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py index 947a1c6d01d..feae732e2ad 100644 --- a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py +++ b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py @@ -321,6 +321,16 @@ def vrf_loopback_ip(self, pool: str) -> str: offset = self.shared_utils.id + self.shared_utils.loopback_ipv4_offset return get_ip_from_pool(pool, 32, offset, 0) + def vrf_loopback_ipv6(self, pool: str) -> str: + """ + Return IP address for a Loopback interface based on the given pool. + Default offset from pool is `id + loopback_ipv6_offset` + + Used for "vtep_diagnostic.loopback". + """ + offset = self.shared_utils.id + self.shared_utils.loopback_ipv6_offset + return get_ip_from_pool(pool, 128, offset, 0) + def evpn_underlay_l3_multicast_group( self, underlay_l3_multicast_group_ipv4_pool: str, diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json new file mode 100644 index 00000000000..b4de8555444 --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -0,0 +1,62127 @@ +{ + "type": "object", + "properties": { + "application_classification": { + "type": "object", + "description": "Application traffic recognition configuration.", + "properties": { + "categories": { + "type": "array", + "description": "List of categories.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Category name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Categories" + }, + "field_sets": { + "type": "object", + "properties": { + "l4_ports": { + "type": "array", + "description": "L4 port field-set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "L4 port field-set name.", + "title": "Name" + }, + "port_values": { + "type": "array", + "items": { + "type": "string", + "description": "Port values or range of port values.\nPort values are between 0 and 65535." + }, + "title": "Port Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Ports" + }, + "ipv4_prefixes": { + "type": "array", + "description": "IPv4 prefix field set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 prefix field-set name.", + "title": "Name" + }, + "prefix_values": { + "type": "array", + "items": { + "type": "string", + "description": "IP prefix (ex 1.2.3.0/24)." + }, + "title": "Prefix Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Field Sets" + }, + "applications": { + "type": "object", + "properties": { + "ipv4_applications": { + "type": "array", + "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "src_prefix_set_name": { + "type": "string", + "description": "Source prefix set name.", + "title": "Src Prefix Set Name" + }, + "dest_prefix_set_name": { + "type": "string", + "description": "Destination prefix set name.", + "title": "Dest Prefix Set Name" + }, + "dscp_ranges": { + "type": "array", + "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", + "items": { + "type": "string", + "description": "DSCP value or range syntax.", + "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" + }, + "title": "DSCP Ranges" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Applications" + }, + "l4_applications": { + "type": "array", + "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Applications" + }, + "application_profiles": { + "type": "array", + "description": "Group of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Profile name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications part of the application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + }, + "application_transports": { + "type": "array", + "description": "List of transport protocols.", + "items": { + "type": "string", + "description": "Transport name.", + "enum": [ + "http", + "https", + "udp", + "tcp", + "ip", + "ip6", + "ssl", + "rtp", + "sctp", + "quic" + ] + }, + "title": "Application Transports" + }, + "categories": { + "type": "array", + "description": "Categories under this application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of a category.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Categories" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Application Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Application Classification" + }, + "avd_data_conversion_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug", + "quiet" + ], + "default": "debug", + "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", + "title": "AVD Data Conversion Mode" + }, + "avd_data_validation_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug" + ], + "default": "warning", + "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", + "title": "AVD Data Validation Mode" + }, + "bfd_multihop": { + "type": "object", + "description": "BFD Multihop tuning.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "default": { + "interval": 300, + "min_rx": 300, + "multiplier": 3 + }, + "title": "BFD Multihop" + }, + "bgp_as": { + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\" to use to configure overlay when \"overlay_routing_protocol\" == ibgp.\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "type": "string", + "title": "BGP As" + }, + "bgp_default_ipv4_unicast": { + "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors.\nIt is best practice to disable activation.\n", + "type": "boolean", + "default": false, + "title": "BGP Default IPv4 Unicast" + }, + "bgp_distance": { + "type": "object", + "properties": { + "external_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "External Routes" + }, + "internal_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Internal Routes" + }, + "local_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Local Routes" + } + }, + "required": [ + "external_routes", + "internal_routes", + "local_routes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP Distance" + }, + "bgp_ecmp": { + "description": "Maximum ECMP for BGP multi-path.\nThe default value is 4 except for WAN Routers where the default value is unset (falls back to EOS default).", + "type": "integer", + "title": "BGP ECMP" + }, + "bgp_graceful_restart": { + "description": "BGP graceful-restart allows a BGP speaker with separate control plane and data plane processing to continue forwarding traffic during a BGP restart.\nIts neighbors (receiving speakers) may retain routing information from the restarting speaker while a BGP session with it is being re-established, reducing route flapping.\n", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "description": "Enable or disable graceful-restart for all BGP peers.", + "title": "Enabled" + }, + "restart_time": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 300, + "description": "Restart time in seconds.", + "title": "Restart Time" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP Graceful Restart" + }, + "bgp_maximum_paths": { + "description": "Maximum Paths for BGP multi-path.\nThe default value is 4 except for WAN Routers where the default value is 16.", + "type": "integer", + "minimum": 1, + "maximum": 512, + "title": "BGP Maximum Paths" + }, + "bgp_mesh_pes": { + "type": "boolean", + "default": false, + "description": "Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.\nOnly supported in combination with MPLS overlay.\n", + "title": "BGP Mesh PEs" + }, + "bgp_peer_groups": { + "description": "Leverage an Arista EOS switch to generate the encrypted password using the correct peer group name.\nNote that the name of the peer groups use '-' instead of '_' in EOS configuration.\n", + "type": "object", + "properties": { + "ipv4_underlay_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "IPv4-UNDERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": false, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4 Underlay Peers" + }, + "mlag_ipv4_underlay_peer": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "MLAG-IPv4-UNDERLAY-PEER", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": false, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG IPv4 Underlay Peer" + }, + "evpn_overlay_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "EVPN-OVERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Overlay Peers" + }, + "evpn_overlay_core": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "EVPN-OVERLAY-CORE", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Overlay Core" + }, + "mpls_overlay_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "MPLS-OVERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS Overlay Peers" + }, + "rr_overlay_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "RR-OVERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rr Overlay Peers" + }, + "ipvpn_gateway_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "IPVPN-GATEWAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ipvpn Gateway Peers" + }, + "wan_overlay_peers": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "WAN-OVERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.\nWhen configuring a password on the `wan_overlay_peers` BGP peer group,\nit may also be required to set a password for the `wan_rr_overlay_peers` BGP peer group.\nThis is required in the case where one or more pathfinders use the same VTEP IP range as the edge routers.\nIf the password is not set, the static BGP peerings between Pathfinders may not come up.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Specify the BFD timers to override the default values.\nIt is recommended to keep BFD total timeout longer than the DPS timeout.\nThe Default BFD timeout is 10 x 1 seconds and the default DPS timeout is 5 x 1 seconds.", + "properties": { + "interval": { + "type": "integer", + "default": 1000, + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "default": 1000, + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "default": 10, + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "listen_range_prefixes": { + "type": "array", + "description": "Only used for nodes where `wan_role` is `server` like AutoVPN RRs and Pathfinders.\nFor clients, AVD will raise an error if the Loopback0 IP is not in any listen range.", + "items": { + "type": "string", + "description": "The prefixes to use in listen_range." + }, + "title": "Listen Range Prefixes" + }, + "ttl_maximum_hops": { + "type": "integer", + "default": 1, + "title": "TTL Maximum Hops" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wan Overlay Peers" + }, + "wan_rr_overlay_peers": { + "type": "object", + "description": "Configuration options for the peer-group created to peer between AutoVPN RRs or CV Pathfinders.", + "properties": { + "name": { + "type": "string", + "default": "WAN-RR-OVERLAY-PEERS", + "description": "Name of peer group.", + "title": "Name" + }, + "password": { + "type": "string", + "description": "Type 7 encrypted password.\nWhen configuring a password on the `wan_overlay_peers` BGP peer group,\nit may also be required to set a password for the `wan_rr_overlay_peers` BGP peer group.\nThis is required in the case where one or more pathfinders use the same VTEP IP range as the edge routers.\nIf the password is not set, the static BGP peerings between Pathfinders may not come up.", + "title": "Password" + }, + "bfd": { + "type": "boolean", + "default": true, + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Specify the BFD timers to override the default values.\nIt is recommended to keep BFD total timeout longer than the DPS timeout.\nThe Default BFD timeout is 10 x 1 seconds and the default DPS timeout is 5 x 1 seconds.", + "properties": { + "interval": { + "type": "integer", + "default": 1000, + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "default": 1000, + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "default": 10, + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ttl_maximum_hops": { + "type": "integer", + "default": 1, + "title": "TTL Maximum Hops" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wan Rr Overlay Peers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP Peer Groups" + }, + "bgp_update_wait_install": { + "type": "boolean", + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", + "title": "BGP Update Wait Install" + }, + "bgp_update_wait_for_convergence": { + "type": "boolean", + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", + "title": "BGP Update Wait For Convergence" + }, + "connected_endpoints_keys": { + "description": "Endpoints connecting to the fabric can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`connected_endpoints_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "title": "Key" + }, + "type": { + "type": "string", + "description": "Type used for documentation.", + "title": "Type" + }, + "description": { + "type": "string", + "description": "Description used for documentation.", + "title": "Description" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "key" + ] + }, + "default": [ + { + "key": "servers", + "type": "server", + "description": "Server." + }, + { + "key": "firewalls", + "type": "firewall", + "description": "Firewall." + }, + { + "key": "routers", + "type": "router", + "description": "Router." + }, + { + "key": "load_balancers", + "type": "load_balancer", + "description": "Load Balancer." + }, + { + "key": "storage_arrays", + "type": "storage_array", + "description": "Storage Array." + }, + { + "key": "cpes", + "type": "cpe", + "description": "CPE." + }, + { + "key": "workstations", + "type": "workstation", + "description": "Workstation." + }, + { + "key": "access_points", + "type": "access_point", + "description": "Access Point." + }, + { + "key": "phones", + "type": "phone", + "description": "Phone." + }, + { + "key": "printers", + "type": "printer", + "description": "Printer." + }, + { + "key": "cameras", + "type": "camera", + "description": "Camera." + }, + { + "key": "generic_devices", + "type": "generic_device", + "description": "Generic Device." + } + ], + "title": "Connected Endpoints Keys" + }, + "core_interfaces": { + "type": "object", + "properties": { + "p2p_links_ip_pools": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "P2P pool name.", + "title": "Name" + }, + "ipv4_pool": { + "type": "string", + "description": "IPv4 address/Mask.", + "title": "IPv4 Pool" + }, + "prefix_size": { + "type": "integer", + "description": "Subnet mask size.", + "default": 31, + "minimum": 8, + "maximum": 31, + "title": "Prefix Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "P2P Links IP Pools" + }, + "p2p_links_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "P2P profile name. Any variable supported under `p2p_links` can be inherited from a profile.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", + "title": "ID" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "ip_pool": { + "type": "string", + "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", + "title": "IP Pool" + }, + "subnet": { + "type": "string", + "description": "IPv4 address/Mask. Subnet used on this P2P link.", + "title": "Subnet" + }, + "ip": { + "type": "array", + "description": "Specific IP addresses used on this P2P link.", + "items": { + "type": "string", + "description": "Node IPv4 address/Mask." + }, + "title": "IP" + }, + "ipv6_enable": { + "type": "boolean", + "default": false, + "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", + "title": "IPv6 Enable" + }, + "nodes": { + "type": "array", + "description": "Nodes where this link should be configured.", + "items": { + "type": "string", + "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" + }, + "title": "Nodes" + }, + "interfaces": { + "type": "array", + "description": "Interfaces where this link should be configured and Required unless using port-channels.", + "items": { + "type": "string", + "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" + }, + "title": "Interfaces" + }, + "as": { + "type": "array", + "description": "AS numbers for BGP.\nRequired with bgp peering.\n", + "items": { + "type": "string", + "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." + }, + "title": "As" + }, + "descriptions": { + "type": "array", + "description": "Interface description.", + "items": { + "type": "string" + }, + "title": "Descriptions" + }, + "include_in_underlay_protocol": { + "type": "boolean", + "default": true, + "description": "Add this interface to underlay routing protocol.", + "title": "Include In Underlay Protocol" + }, + "isis_hello_padding": { + "type": "boolean", + "default": false, + "title": "ISIS Hello Padding" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1", + "level-2", + "level-1-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "md5", + "text" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "mpls_ip": { + "type": "boolean", + "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", + "title": "MPLS IP" + }, + "mpls_ldp": { + "type": "boolean", + "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", + "title": "MPLS LDP" + }, + "mtu": { + "type": "integer", + "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", + "title": "MTU" + }, + "bfd": { + "type": "boolean", + "default": false, + "description": "Enable BFD (only considered for BGP).", + "title": "BFD" + }, + "ptp": { + "description": "PTP parameters.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "description": "Enable PTP.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow. Overrides `fabric_sflow` setting.", + "title": "Sflow" + }, + "underlay_multicast": { + "type": "boolean", + "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", + "default": false, + "title": "Underlay Multicast" + }, + "flow_tracking": { + "type": "object", + "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "qos_profile": { + "type": "string", + "description": "QOS service profile.", + "title": "QOS Profile" + }, + "macsec_profile": { + "type": "string", + "description": "MAC security profile.", + "title": "Macsec Profile" + }, + "port_channel": { + "description": "Port-channel parameters.", + "type": "object", + "properties": { + "mode": { + "type": "string", + "default": "active", + "title": "Mode" + }, + "nodes_child_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "node": { + "type": "string", + "title": "Node" + }, + "interfaces": { + "type": "array", + "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", + "title": "Channel ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "node" + ] + }, + "title": "Nodes Child Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "routing_protocol": { + "type": "string", + "enum": [ + "ebgp" + ], + "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", + "title": "Routing Protocol" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "P2P Links Profiles" + }, + "p2p_links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "description": "Nodes where this link should be configured.", + "items": { + "type": "string", + "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" + }, + "title": "Nodes" + }, + "profile": { + "type": "string", + "description": "P2P profile name. Profile defined under p2p_profiles.", + "title": "Profile" + }, + "id": { + "type": "integer", + "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", + "title": "ID" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "ip_pool": { + "type": "string", + "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", + "title": "IP Pool" + }, + "subnet": { + "type": "string", + "description": "IPv4 address/Mask. Subnet used on this P2P link.", + "title": "Subnet" + }, + "ip": { + "type": "array", + "description": "Specific IP addresses used on this P2P link.", + "items": { + "type": "string", + "description": "Node IPv4 address/Mask." + }, + "title": "IP" + }, + "ipv6_enable": { + "type": "boolean", + "default": false, + "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", + "title": "IPv6 Enable" + }, + "interfaces": { + "type": "array", + "description": "Interfaces where this link should be configured and Required unless using port-channels.", + "items": { + "type": "string", + "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" + }, + "title": "Interfaces" + }, + "as": { + "type": "array", + "description": "AS numbers for BGP.\nRequired with bgp peering.\n", + "items": { + "type": "string", + "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." + }, + "title": "As" + }, + "descriptions": { + "type": "array", + "description": "Interface description.", + "items": { + "type": "string" + }, + "title": "Descriptions" + }, + "include_in_underlay_protocol": { + "type": "boolean", + "default": true, + "description": "Add this interface to underlay routing protocol.", + "title": "Include In Underlay Protocol" + }, + "isis_hello_padding": { + "type": "boolean", + "default": false, + "title": "ISIS Hello Padding" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1", + "level-2", + "level-1-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "md5", + "text" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "mpls_ip": { + "type": "boolean", + "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", + "title": "MPLS IP" + }, + "mpls_ldp": { + "type": "boolean", + "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", + "title": "MPLS LDP" + }, + "mtu": { + "type": "integer", + "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", + "title": "MTU" + }, + "bfd": { + "type": "boolean", + "default": false, + "description": "Enable BFD (only considered for BGP).", + "title": "BFD" + }, + "ptp": { + "description": "PTP parameters.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "description": "Enable PTP.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow. Overrides `fabric_sflow` setting.", + "title": "Sflow" + }, + "underlay_multicast": { + "type": "boolean", + "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", + "default": false, + "title": "Underlay Multicast" + }, + "flow_tracking": { + "type": "object", + "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "qos_profile": { + "type": "string", + "description": "QOS service profile.", + "title": "QOS Profile" + }, + "macsec_profile": { + "type": "string", + "description": "MAC security profile.", + "title": "Macsec Profile" + }, + "port_channel": { + "description": "Port-channel parameters.", + "type": "object", + "properties": { + "mode": { + "type": "string", + "default": "active", + "title": "Mode" + }, + "nodes_child_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "node": { + "type": "string", + "title": "Node" + }, + "interfaces": { + "type": "array", + "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", + "title": "Channel ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "node" + ] + }, + "title": "Nodes Child Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "routing_protocol": { + "type": "string", + "enum": [ + "ebgp" + ], + "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", + "title": "Routing Protocol" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", + "title": "Structured Config" + } + }, + "required": [ + "nodes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "P2P Links" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Core Interfaces" + }, + "custom_structured_configuration_list_merge": { + "type": "string", + "description": "The List-merge strategy used when merging custom structured configurations.\n\nThis applies to all vars prefixed by prefixes in `custom_structured_configuration_prefix`\nand all data under the various `structured_config` options.\n\nThe available list merge strategies:\n- `replace`:\n - Any list will be replaced with the list defined in custom structured configurations.\n- `append`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be appended to the existing list (including duplicates).\n- `keep`:\n - Only set list if there is no existing list or existing list is `None`.\n- `prepend`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be prepended to the existing list (including duplicates).\n- `append_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list.\n- `prepend_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be prepended to the existing list.\n", + "enum": [ + "replace", + "append", + "keep", + "prepend", + "append_rp", + "prepend_rp" + ], + "default": "append_rp", + "title": "Custom Structured Configuration List Merge" + }, + "custom_structured_configuration_prefix": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Custom EOS Structured Configuration keys can be set on any group or host_var level using the name\nof the corresponding `eos_cli_config_gen` key prefixed with content of `custom_structured_configuration_prefix`.\n\nThe content of Custom Structured Configuration variables will be merged with the structured config generated by the eos_designs role.\n\nThe merge is done recursively, so it is possible to update a sub-key of a variable set by `eos_designs` role already.\n\nThe merge follow these recursive merge strategies:\n- New keys will be added for all types.\n- Existing keys of type \"List\" with a \"Primary key\" set in the schema:\n - Strategy can be changed with `custom_structured_configuration_list_merge`. Default strategy:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list\n- Other keys of type \"List\" will have new unique items appended the the existing list.\n- Existing keys of type \"Dictionary\" will recursively merge\n- Other existing keys will be replaced.\n", + "default": [ + "custom_structured_configuration_" + ], + "title": "Custom Structured Configuration Prefix" + }, + "cv_pathfinder_global_sites": { + "description": "Define sites that are outside of the CV Pathfinder hierarchy.\nThis is used to arrange pathfinders in the CloudVision topology layout.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The site name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "location": { + "type": "string", + "description": "Location as a string is resolved on Cloudvision.", + "title": "Location" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Cv Pathfinder Global Sites" + }, + "cv_pathfinder_internet_exit_policies": { + "description": "PREVIEW: These keys are in preview mode.\n\nList of internet-exit policies used for the WAN configuration.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Internet-exit policy name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Internet-exit policy type.\ndirect: Exit directly over wan interfaces\nzscaler: Exit using Zscaler secure web gateway service", + "enum": [ + "direct", + "zscaler" + ], + "title": "Type" + }, + "fallback_to_system_default": { + "type": "boolean", + "default": true, + "description": "Add system default exit-group at the end of the policy.", + "title": "Fallback To System Default" + }, + "zscaler": { + "type": "object", + "description": "Zscaler information. Only used if `type` is 'zscaler'.", + "properties": { + "ipsec_key_salt": { + "type": "string", + "description": "\"Salt\" used for auto generation of encryption keys for IPsec tunnels to Zscaler.\nThe keys will be generated as a hash of `salt__`.\nSince this salt can be used to deduct the encryption key, it is recommeneded to use vault.", + "title": "Ipsec Key Salt" + }, + "domain_name": { + "type": "string", + "description": "Domain name as configured in Zscaler for the tenant. Used as UFQDN suffix for authentication.", + "title": "Domain Name" + }, + "encrypt_traffic": { + "type": "boolean", + "default": true, + "description": "When `true` the traffic going over the tunnels will be encrypted with AES-256-GCM. Otherwise the traffic will be using NULL encryption.\nNote that encryption requires a subscription on the Zscaler account.", + "title": "Encrypt Traffic" + }, + "download_bandwidth": { + "type": "integer", + "description": "Maximum allowed download bandwidth in Mbps for each device using this policy.", + "title": "Download Bandwidth" + }, + "upload_bandwidth": { + "type": "integer", + "description": "Maximum allowed upload bandwidth in Mbps for each device using this policy.", + "title": "Upload Bandwidth" + }, + "firewall": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enforce firewall controls.", + "default": false, + "title": "Enabled" + }, + "ips": { + "type": "boolean", + "description": "Enable IPS Controls for the firewall.", + "default": false, + "title": "Ips" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Firewall" + }, + "acceptable_use_policy": { + "type": "boolean", + "description": "Display an Acceptable Use Policy (AUP) and require users to accept it.", + "default": false, + "title": "Acceptable Use Policy" + } + }, + "required": [ + "ipsec_key_salt", + "domain_name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Zscaler" + } + }, + "required": [ + "type", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Cv Pathfinder Internet Exit Policies" + }, + "cv_pathfinder_regions": { + "description": "Define the CV Pathfinder hierarchy.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "id": { + "type": "integer", + "description": "The region ID must be unique for the whole WAN deployment.", + "minimum": 1, + "maximum": 255, + "title": "ID" + }, + "sites": { + "type": "array", + "description": "All sites are placed in a default zone \"-ZONE\" with ID 1.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The site name.", + "minLength": 1, + "maxLength": 128, + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "id": { + "type": "integer", + "description": "The site ID must be unique within a zone.\nGiven that all the sites are placed in a zone named after the region, the site ID must be unique within a region.", + "minimum": 1, + "maximum": 10000, + "title": "ID" + }, + "location": { + "type": "string", + "description": "Location as a string is resolved on Cloudvision.", + "title": "Location" + }, + "site_contact": { + "type": "string", + "title": "Site Contact" + }, + "site_after_hours_contact": { + "type": "string", + "title": "Site After Hours Contact" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "description": "Site name and ID." + }, + "title": "Sites" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "description": "Region name and ID." + }, + "title": "Cv Pathfinder Regions" + }, + "cv_server": { + "description": "PREVIEW: These keys are in preview mode.\n\nHostname or IP address of CloudVision host. Ex. \"www.arista.io\" for CVaaS.\nFor `eos_designs` this variable is only used for the WAN Internet-exit integration with Zscaler.\nThe same variable name is also used by the `cv_deploy` role, and will override the value of `ansible_host` on inventory 'cloudvision' host.\nMake sure to set it in a common group_vars file.", + "type": "string", + "title": "Cv Server" + }, + "cv_tags_topology_type": { + "description": "PREVIEW: This key is currently not supported\nDevice type that CloudVision should use when generating the Topology. Defaults to the setting under node_type_keys.", + "type": "string", + "enum": [ + "leaf", + "spine", + "core", + "edge" + ], + "title": "Cv Tags Topology Type" + }, + "cv_token": { + "description": "PREVIEW: These keys are in preview mode.\n\nService account token as defined on CloudVision. This value should be using Ansible Vault.\nFor `eos_designs` this variable is only used for the WAN Internet-exit integration with Zscaler.\nThe same variable name is also used by the `cv_deploy` role, and will override the value of `ansible_password` on inventory 'cloudvision' host.\nMake sure to set it in a common group_vars file.", + "type": "string", + "title": "Cv Token" + }, + "cv_topology": { + "type": "array", + "description": "Generate AVD configurations directly from the given CloudVision topology.\nActivate this feature by setting `use_cv_topology` to `true`.\nRequires `default_interfaces` to be set for the relevant platforms and node types to detect the proper interface roles automatically.\nNeighbor hostnames must match the inventory hostnames of the AVD inventory to be taken into consideration.", + "items": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "title": "Hostname" + }, + "platform": { + "type": "string", + "title": "Platform" + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "neighbor": { + "type": "string", + "title": "Neighbor" + }, + "neighbor_interface": { + "type": "string", + "title": "Neighbor Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Interfaces" + } + }, + "required": [ + "platform", + "interfaces", + "hostname" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Cv Topology" + }, + "cvp_ingestauth_key": { + "type": "string", + "description": "On-premise CVP ingest auth key. If set, TerminAttr will be configured with key-based authentication for on-premise CVP.\nIf not set, TerminAttr will be configured with certificate based authentication:\n- On-premise using token onboarding. Default token path is '/tmp/token'.\n- CVaaS using token-secure onboarding. Default token path is '/tmp/cv-onboarding-token'.\nToken must be copied to the device first.", + "title": "CVP Ingestauth Key" + }, + "cvp_instance_ip": { + "type": "string", + "description": "IPv4 address or DNS name for CloudVision.\nThis variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead.", + "deprecated": true, + "title": "CVP Instance IP" + }, + "cvp_instance_ips": { + "type": "array", + "description": "List of IPv4 addresses or DNS names for CloudVision.\nFor on-premise CloudVision enter all the nodes of the cluster.\nFor CloudVision as a Service enter the DNS name of the instance.\n`eos_designs` only supports one CloudVision cluster.\n", + "items": { + "type": "string", + "description": "IPv4 address or DNS name for CloudVision." + }, + "title": "CVP Instance Ips" + }, + "cvp_token_file": { + "type": "string", + "description": "cvp_token_file is the path to the token file on the switch.\nIf not set the default locations for on-premise or CVaaS will be used.\nSee cvp_ingestauth_key for details.", + "title": "CVP Token File" + }, + "dc_name": { + "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- HER Overlay DC scoped flood lists: `overlay_her_flood_list_scope: dc` (Required)\n", + "type": "string", + "title": "DC Name" + }, + "default_igmp_snooping_enabled": { + "description": "When set to false, disables IGMP snooping at fabric level and overrides per vlan settings.\n", + "type": "boolean", + "default": true, + "title": "Default IGMP Snooping Enabled" + }, + "default_interface_mtu": { + "type": "integer", + "description": "Default interface MTU configured on EOS under \"interface defaults\".\nCan be overridden per platform under platform settings.\n", + "minimum": 68, + "maximum": 65535, + "title": "Default Interface MTU" + }, + "default_interfaces": { + "type": "array", + "description": "Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).\n", + "items": { + "type": "object", + "properties": { + "types": { + "type": "array", + "description": "List of node type keys.", + "items": { + "type": "string" + }, + "title": "Types" + }, + "platforms": { + "type": "array", + "description": "List of platform families.\nThis is defined as a Python regular expression that matches the full platform type.\n", + "items": { + "type": "string", + "description": "Arista platform family regular expression." + }, + "title": "Platforms" + }, + "uplink_interfaces": { + "type": "array", + "description": "List of uplink interfaces or uplink interface ranges.", + "items": { + "type": "string", + "description": "Interface range or interface." + }, + "title": "Uplink Interfaces" + }, + "mlag_interfaces": { + "type": "array", + "description": "List of MLAG interfaces or MLAG interface ranges.", + "items": { + "type": "string", + "description": "Interface range or interface." + }, + "title": "MLAG Interfaces" + }, + "downlink_interfaces": { + "type": "array", + "description": "List of downlink interfaces or downlink interface ranges.", + "items": { + "type": "string", + "description": "Interface range or interface." + }, + "title": "Downlink Interfaces" + } + }, + "required": [ + "types", + "platforms" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Default Interfaces" + }, + "default_mgmt_method": { + "type": "string", + "description": "`default_mgmt_method` controls the default VRF and source interface used for the following management and monitoring protocols configured with `eos_designs`:\n - `ntp_settings`\n - `sflow_settings`\n\n`oob` means the protocols will be configured with the VRF set by `mgmt_interface_vrf` and `mgmt_interface` as the source interface.\n`inband` means the protocols will be configured with the VRF set by `inband_mgmt_vrf` and `inband_mgmt_interface` as the source interface.\n`none` means the VRF and or interface must be manually set for each protocol.\nThis can be overridden under the settings for each protocol.\n", + "enum": [ + "oob", + "inband", + "none" + ], + "default": "oob", + "title": "Default Management Method" + }, + "default_node_types": { + "type": "array", + "description": "Uses hostname matches against a regular expression to determine the node type.", + "items": { + "type": "object", + "properties": { + "node_type": { + "type": "string", + "description": "Resulting node type when regex matches.", + "title": "Node Type" + }, + "match_hostnames": { + "type": "array", + "description": "Regular expressions to match against hostnames.", + "items": { + "type": "string", + "description": "Regex needs to match full hostname (i.e. is bounded by ^ and $ elements)." + }, + "title": "Match Hostnames" + } + }, + "required": [ + "match_hostnames", + "node_type" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Default Node Types" + }, + "design": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "By setting the design.type variable, the default node-types and templates described in these documents will be used.\n", + "enum": [ + "l3ls-evpn", + "mpls", + "l2ls" + ], + "default": "l3ls-evpn", + "title": "Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Design" + }, + "enable_trunk_groups": { + "type": "boolean", + "description": "Enable Trunk Group support across eos_designs.\nWarning: Because of the nature of the EOS Trunk Group feature, enabling this is \"all or nothing\".\n*All* vlans and *all* trunks towards connected endpoints must be using trunk groups as well.\nIf trunk groups are not assigned to a trunk, no vlans will be enabled on that trunk.\nSee \"Details on enable_trunk_groups\" below before enabling this feature.\n", + "default": false, + "title": "Enable Trunk Groups" + }, + "eos_designs_custom_templates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "template": { + "type": "string", + "description": "Template file.", + "title": "Template" + }, + "options": { + "description": "Template options.", + "type": "object", + "properties": { + "list_merge": { + "type": "string", + "description": "Merge strategy for lists.", + "default": "append_rp", + "title": "List Merge" + }, + "strip_empty_keys": { + "type": "boolean", + "description": "Filter out keys from the generated output if value is null/none/undefined.", + "default": true, + "title": "Strip Empty Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Options" + } + }, + "required": [ + "template" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "EOS Designs Custom Templates" + }, + "eos_designs_documentation": { + "description": "Control fabric documentation generation.\n", + "type": "object", + "properties": { + "connected_endpoints": { + "description": "Generate fabric-wide documentation for connected endpoints.\n", + "type": "boolean", + "default": false, + "title": "Connected Endpoints" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EOS Designs Documentation" + }, + "event_handlers": { + "type": "array", + "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Event Handler Name.", + "title": "Name" + }, + "action_type": { + "type": "string", + "enum": [ + "bash", + "increment", + "log" + ], + "title": "Action Type" + }, + "action": { + "type": "string", + "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", + "deprecated": true, + "title": "Action" + }, + "actions": { + "type": "object", + "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", + "properties": { + "bash_command": { + "type": "string", + "description": "Define BASH command action. Command could be multiline also.", + "title": "Bash Command" + }, + "log": { + "type": "boolean", + "description": "Log a message when the event is triggered.", + "title": "Log" + }, + "increment_device_health_metric": { + "type": "string", + "description": "Name of device-health metric.", + "title": "Increment Device Health Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Actions" + }, + "delay": { + "type": "integer", + "description": "Event-handler delay in seconds.\n", + "title": "Delay" + }, + "trigger": { + "type": "string", + "description": "Configure event trigger condition.\n", + "enum": [ + "on-boot", + "on-counters", + "on-intf", + "on-logging", + "on-maintenance", + "on-startup-config", + "vm-tracer vm" + ], + "title": "Trigger" + }, + "trigger_on_counters": { + "type": "object", + "properties": { + "condition": { + "type": "string", + "description": "Set the logical expression to evaluate.", + "title": "Condition" + }, + "granularity_per_source": { + "type": "boolean", + "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", + "title": "Granularity Per Source" + }, + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Counters" + }, + "trigger_on_logging": { + "type": "object", + "properties": { + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages.", + "title": "Regex" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Logging" + }, + "trigger_on_intf": { + "type": "object", + "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", + "properties": { + "interface": { + "type": "string", + "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", + "title": "Interface" + }, + "ip": { + "type": "boolean", + "description": "Action is triggered upon changes to interface IP address assignment.", + "title": "IP" + }, + "ipv6": { + "type": "boolean", + "description": "Action is triggered upon changes to interface ipv6 address assignment.", + "title": "IPv6" + }, + "operstatus": { + "type": "boolean", + "description": "Action is triggered upon changes to interface operStatus.", + "title": "Operstatus" + } + }, + "required": [ + "interface" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Intf" + }, + "trigger_on_maintenance": { + "description": "Settings required for trigger 'on-maintenance'.", + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": [ + "enter", + "exit" + ], + "title": "Operation" + }, + "bgp_peer": { + "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", + "type": "string", + "title": "BGP Peer" + }, + "action": { + "type": "string", + "description": "Action for maintenance operation.", + "enum": [ + "after", + "before", + "all", + "begin", + "end" + ], + "title": "Action" + }, + "stage": { + "type": "string", + "description": "Action is triggered after/before specified stage.", + "enum": [ + "bgp", + "linkdown", + "mlag", + "ratemon" + ], + "title": "Stage" + }, + "vrf": { + "type": "string", + "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", + "title": "VRF" + }, + "interface": { + "type": "string", + "description": "Trigger condition occurs on maintenance operation of specified interface.", + "title": "Interface" + }, + "unit": { + "type": "string", + "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", + "title": "Unit" + } + }, + "required": [ + "operation", + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Maintenance" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", + "deprecated": true, + "title": "Regex" + }, + "asynchronous": { + "type": "boolean", + "default": false, + "description": "Set the action to be non-blocking.\n", + "title": "Asynchronous" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Event Handlers" + }, + "evpn_ebgp_gateway_inter_domain": { + "type": "boolean", + "title": "EVPN Ebgp Gateway Inter Domain" + }, + "evpn_ebgp_gateway_multihop": { + "description": "Default of 15, considering a large value to avoid BGP reachability issues in very complex DCI networks.\nAdapt the value for your specific topology.\n", + "type": "integer", + "default": 15, + "title": "EVPN Ebgp Gateway Multihop" + }, + "evpn_ebgp_multihop": { + "description": "Default of 3, the recommended value for a 3 stage spine and leaf topology.\nSet to a higher value to allow for very large and complex topologies.\n", + "type": "integer", + "default": 3, + "title": "EVPN Ebgp Multihop" + }, + "evpn_hostflap_detection": { + "type": "object", + "properties": { + "enabled": { + "description": "If set to false it will disable EVPN host-flap detection.", + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "threshold": { + "description": "Minimum number of MAC moves that indicate a MAC duplication issue.", + "type": "integer", + "default": 5, + "title": "Threshold" + }, + "window": { + "description": "Time (in seconds) to detect a MAC duplication issue.", + "type": "integer", + "default": 180, + "title": "Window" + }, + "expiry_timeout": { + "description": "Time (in seconds) to purge a MAC duplication issue.", + "type": "integer", + "title": "Expiry Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Hostflap Detection" + }, + "evpn_import_pruning": { + "description": "Enable VPN import pruning (Min. EOS 4.24.2F).\nThe Route Target extended communities carried by incoming VPN paths will be examined.\nIf none of those Route Targets have been configured for import, the path will be immediately discarded.\n", + "type": "boolean", + "default": false, + "title": "EVPN Import Pruning" + }, + "evpn_multicast": { + "type": "boolean", + "description": "General Configuration required for EVPN Multicast. \"evpn_l2_multicast\" or \"evpn_l3_multicast\" must also be configured under the Network Services (tenants).\nRequires \"underlay_multicast: true\" and IGMP snooping enabled globally (default).\nFor MLAG devices Route Distinguisher must be unique since this feature will create multi-vtep configuration.\nWarning !!! For Trident3 based platforms i.e 7050X3, 7300X3, 720XP.\n The Following default platform setting will be configured on 7050X3 and 7300X3: \"platform trident forwarding-table partition flexible exact-match 16384 l2-shared 98304 l3-shared 131072\"\n The Following default platform setting will be configured on 720XP: \"flexible exact-match 16000 l2-shared 18000 l3-shared 22000\"\n All forwarding agents will be restarted when this configuration is applied.\n You can tune the settings by overriding the default variable: \"platform_settings[platforms].trident_forwarding_table_partition:\"\n Please contact an Arista representative for help with determining the appropriate values for your environment.\n", + "default": false, + "title": "EVPN Multicast" + }, + "evpn_overlay_bgp_rtc": { + "description": "Enable Route Target Membership Constraint Address Family on EVPN overlay BGP peerings (Min. EOS 4.25.1F).\nRequires use eBGP as overlay protocol.\n", + "type": "boolean", + "default": false, + "title": "EVPN Overlay BGP Rtc" + }, + "evpn_prevent_readvertise_to_server": { + "description": "Configure route-map on eBGP sessions towards route-servers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in large-scale networks, where convergence will be quicker by not returning all updates received\nfrom Route-server-1 to Router-server-2 just for Route-server-2 to throw them away because of AS Path loop detection.\n", + "type": "boolean", + "default": false, + "title": "EVPN Prevent Readvertise To Server" + }, + "evpn_short_esi_prefix": { + "description": "Configure prefix for \"short_esi\" values.", + "type": "string", + "default": "0000:0000:", + "title": "EVPN Short Esi Prefix" + }, + "evpn_vlan_aware_bundles": { + "description": "Enable VLAN aware bundles for every EVPN MAC-VRF.\nIf set to `true` all SVIs in a VRF are configured in a vlan-aware-bundle using the VRF name as the bundle name. `l2vlans` are bundled in vlan-aware-bundles using the VLAN name as the bundle name.\n\nThe `evpn_vlan_bundle` option under `svis` and `l2vlans` takes precedence and overrides this behavior. Per svi/l2vlan `evpn_vlan_bundle` also works when this setting is disabled which allow mixing vlan-aware-bundles with regular MAC-VRFs.", + "type": "boolean", + "default": false, + "title": "EVPN VLAN Aware Bundles" + }, + "evpn_vlan_bundles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Specify an EVPN vlan-aware-bundle name.\nEVPN vlan-aware-bundles group L2 VLANs and define common settings.\n", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "\"id\" may be used for vlan-aware-bundle RD/RT ID so it should not overlap with l2vlan IDs which are not part of this bundle.\nSee \"overlay_rd_type\" and \"overlay_rt_type\" for details.\n", + "title": "ID" + }, + "rt_override": { + "type": "string", + "description": "By default the MAC VRF bundle RT will be derived from mac_vrf_id_base + bundle_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", + "title": "Rt Override" + }, + "rd_override": { + "type": "string", + "description": "By default the MAC VRF bundle RD will be derived from mac_vrf_id_base + bundle_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", + "title": "Rd Override" + }, + "evpn_l2_multi_domain": { + "type": "boolean", + "description": "Explicitly extend VLAN-Aware Bundle to remote EVPN domains.\nOverrides `.[].evpn_l2_multi_domain`.\n", + "title": "EVPN L2 Multi Domain" + }, + "bgp": { + "type": "object", + "properties": { + "raw_eos_cli": { + "type": "string", + "description": "EOS cli commands rendered on router_bgp.vlans-aware-bundle.\n", + "title": "Raw EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "EVPN VLAN Bundles" + }, + "fabric_evpn_encapsulation": { + "description": "Should be set to mpls for evpn-mpls scenario.", + "enum": [ + "vxlan", + "mpls" + ], + "default": "vxlan", + "type": "string", + "title": "Fabric EVPN Encapsulation" + }, + "fabric_flow_tracking": { + "type": "object", + "description": "Default enabling of flow-tracking(IPFIX) for various interface types across the fabric.\nFlow Tracking can also be enabled/disabled under each of the specific data models.\nFor general flow-tracking settings see `flow_tracking_settings`.", + "properties": { + "uplinks": { + "description": "Enable flow-tracking on all fabric uplinks.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Uplinks" + }, + "downlinks": { + "description": "Enable flow-tracking on all fabric downlinks.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Downlinks" + }, + "endpoints": { + "description": "Enable flow-tracking on all endpoints ports.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Endpoints" + }, + "l3_edge": { + "description": "Enable flow-tracking on all p2p_links defined under l3_edge.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L3 Edge" + }, + "core_interfaces": { + "description": "Enable flow-tracking on all p2p_links defined under core_interfaces.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Core Interfaces" + }, + "mlag_interfaces": { + "description": "Enable flow-tracking on all MLAG peer interfaces.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG Interfaces" + }, + "l3_interfaces": { + "description": "Enable flow-tracking on all node.l3_interfaces and network-services tenants.vrfs.l3_interfaces.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L3 Interfaces" + }, + "dps_interfaces": { + "description": "Enable flow-tracking on all dps_interfaces.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "DPS Interfaces" + }, + "direct_wan_ha_links": { + "description": "Enable flow-tracking on all direct WAN HA links.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direct Wan Ha Links" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fabric Flow Tracking" + }, + "fabric_ip_addressing": { + "type": "object", + "properties": { + "mlag": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "default": "first_id", + "description": "This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.\nEach MLAG link will have a /31* subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.\nThe offset is calculated using one of the following algorithms:\n - first_id: `(mlag_primary_id - 1) * 2` where `mlag_primary_id` is the ID of the first node defined under the node_group.\n This allocation method will skip every other /31* subnet making it less space efficient than `odd_id`.\n - odd_id: `(odd_id - 1) / 2`. Requires the node_group to have a node with an odd ID and a node with an even ID.\n - same_subnet: the offset will always be zero.\n This allocation method will cause every MLAG link to be addressed with the same /31* subnet.\n\\* - The prefix length is configurable with a default of /31.", + "enum": [ + "first_id", + "odd_id", + "same_subnet" + ], + "title": "Algorithm" + }, + "ipv4_prefix_length": { + "type": "integer", + "default": 31, + "minimum": 1, + "maximum": 31, + "description": "IPv4 prefix length used for MLAG peer-vlan and L3 point-to-point SVIs over the MLAG peer-link.", + "title": "IPv4 Prefix Length" + }, + "ipv6_prefix_length": { + "type": "integer", + "default": 64, + "minimum": 1, + "maximum": 127, + "description": "IPv6 prefix length used for MLAG peer-vlan and L3 point-to-point SVIs over the MLAG peer-link.", + "title": "IPv6 Prefix Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG" + }, + "p2p_uplinks": { + "type": "object", + "properties": { + "ipv4_prefix_length": { + "type": "integer", + "default": 31, + "minimum": 1, + "maximum": 31, + "description": "IPv4 prefix length used for L3 point-to-point uplinks.", + "title": "IPv4 Prefix Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "P2P Uplinks" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fabric IP Addressing" + }, + "fabric_name": { + "description": "Fabric Name, required to match Ansible Group name covering all devices in the Fabric, **must** be an inventory group name.", + "type": "string", + "title": "Fabric Name" + }, + "fabric_sflow": { + "type": "object", + "description": "Default enabling of sFlow for various interface types across the fabric.\nsFlow can also be enabled/disabled under each of the specific data models.\nFor general sFlow settings see `sflow_settings`.", + "properties": { + "uplinks": { + "description": "Enable sFlow on all fabric uplinks.", + "type": "boolean", + "title": "Uplinks" + }, + "downlinks": { + "description": "Enable sFlow on all fabric downlinks.", + "type": "boolean", + "title": "Downlinks" + }, + "endpoints": { + "description": "Enable sFlow on all endpoints ports.", + "type": "boolean", + "title": "Endpoints" + }, + "l3_edge": { + "description": "Enable sFlow on all p2p_links defined under l3_edge.", + "type": "boolean", + "title": "L3 Edge" + }, + "core_interfaces": { + "description": "Enable sFlow on all p2p_links defined under core_interfaces.", + "type": "boolean", + "title": "Core Interfaces" + }, + "mlag_interfaces": { + "description": "Enable sFlow on all MLAG peer interfaces.", + "type": "boolean", + "title": "MLAG Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fabric Sflow" + }, + "flow_tracking_settings": { + "description": "PREVIEW: This key is currently not supported\n\nDefine the flow tracking parameters for this topology.", + "type": "object", + "properties": { + "sampled": { + "type": "object", + "description": "The options relevant only for flow tracker type sampled.", + "properties": { + "encapsulation": { + "type": "object", + "properties": { + "ipv4_ipv6": { + "type": "boolean", + "title": "IPv4 IPv6" + }, + "mpls": { + "type": "boolean", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "sample": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 10000, + "title": "Sample" + }, + "hardware_offload": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Configure hardware offload for IPv4 traffic.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Configure hardware offload for IPv6 traffic.", + "title": "IPv6" + }, + "threshold_minimum": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "description": "Minimum number of samples.", + "title": "Threshold Minimum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Offload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sampled" + }, + "hardware": { + "type": "object", + "description": "The options relevant only for flow tracker type hardware.", + "properties": { + "record": { + "type": "object", + "properties": { + "format_ipfix_standard_timestamps_counters": { + "type": "boolean", + "description": "Enable software export of IPFIX data records.", + "title": "Format Ipfix Standard Timestamps Counters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracker Name", + "title": "Name" + }, + "sampled": { + "type": "object", + "description": "The options relevant only for flow tracker type sampled.", + "properties": { + "table_size": { + "type": "integer", + "minimum": 1, + "maximum": 614400, + "description": "Maximum number of entries in flow table.\n", + "title": "Table Size" + }, + "record_export": { + "type": "object", + "properties": { + "mpls": { + "type": "boolean", + "description": "Export MPLS forwarding information.", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sampled" + }, + "record_export": { + "type": "object", + "properties": { + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds", + "title": "On Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "default": [ + { + "name": "FLOW-TRACKER", + "record_export": { + "on_inactive_timeout": 70000, + "on_interval": 300000 + }, + "exporters": [ + { + "name": "CV-TELEMETRY", + "collector": { + "host": "127.0.0.1" + }, + "local_interface": "Loopback0", + "template_interval": 3600000 + } + ] + } + ], + "title": "Trackers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking Settings" + }, + "generate_cv_tags": { + "type": "object", + "description": "PREVIEW: This key is currently not supported\nGenerate CloudVision Tags based on AVD data.", + "properties": { + "topology_hints": { + "type": "boolean", + "default": false, + "description": "Enable the generation of CloudVision Topology Tags (hints).", + "title": "Topology Hints" + }, + "interface_tags": { + "description": "List of interface tags that should be generated.", + "type": "array", + "items": { + "type": "object", + "description": "Each tag can either have a static value or a dynamic value sourced from structured configuration.", + "properties": { + "name": { + "description": "Tag name to be assigned to generated tags.", + "type": "string", + "title": "Name" + }, + "data_path": { + "description": "Structured config field/key path to be used to find the value for the tag. Dot notation is supported to reference values inside dictionaries.\nFor Example: 'data_path: channel_group.id' would set the tag with the value of the channel id of the interface. If there is no channel id, the tag is not created.\n`data_path` is ignored if `value` is set.", + "type": "string", + "title": "Data Path" + }, + "value": { + "description": "Value to be assigned to the tag.", + "type": "string", + "title": "Value" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Tags" + }, + "device_tags": { + "description": "List of device tags that should be generated.", + "type": "array", + "items": { + "type": "object", + "description": "Each tag can either have a static value or a dynamic value sourced from structured configuration.", + "properties": { + "name": { + "description": "Tag name to be assigned to generated tags.", + "type": "string", + "title": "Name" + }, + "data_path": { + "description": "Structured config field/key path to be used to find the value for the tag. Dot notation is supported to reference values inside dictionaries.\nFor Example: 'data_path: router_bfd.multihop.interval' would set the tag with the value of the interval for multihop bfd. If this value is not specified in the structured config, the tag is not created.\n`data_path` is ignored if `value` is set.", + "type": "string", + "title": "Data Path" + }, + "value": { + "description": "Value to be assigned to the tag.", + "type": "string", + "title": "Value" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Device Tags" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Generate Cv Tags" + }, + "hardware_counters": { + "type": "object", + "properties": { + "features": { + "type": "array", + "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "acl", + "decap-group", + "directflow", + "ecn", + "flow-spec", + "gre tunnel interface", + "ip", + "mpls interface", + "mpls lfib", + "mpls tunnel", + "multicast", + "nexthop", + "pbr", + "pdp", + "policing interface", + "qos", + "qos dual-rate-policer", + "route", + "routed-port", + "segment-security", + "subinterface", + "tapagg", + "traffic-class", + "traffic-policy", + "vlan", + "vlan-interface", + "vni decap", + "vni encap", + "vtep decap", + "vtep encap" + ], + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "cpu" + ], + "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", + "title": "Direction" + }, + "address_type": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "mac" + ], + "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", + "title": "Address Type" + }, + "layer3": { + "type": "boolean", + "description": "Supported only for the 'ip' feature.\n", + "title": "Layer3" + }, + "vrf": { + "type": "string", + "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "VRF" + }, + "prefix": { + "type": "string", + "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "Prefix" + }, + "units_packets": { + "type": "boolean", + "title": "Units Packets" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Features" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Counters" + }, + "internal_vlan_order": { + "type": "object", + "description": "Internal vlan allocation order and range.", + "properties": { + "allocation": { + "type": "string", + "enum": [ + "ascending", + "descending" + ], + "title": "Allocation" + }, + "range": { + "type": "object", + "properties": { + "beginning": { + "type": "integer", + "description": "First VLAN ID.", + "minimum": 2, + "maximum": 4094, + "title": "Beginning" + }, + "ending": { + "type": "integer", + "description": "Last VLAN ID.", + "minimum": 2, + "maximum": 4094, + "title": "Ending" + } + }, + "required": [ + "beginning", + "ending" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Range" + } + }, + "required": [ + "allocation" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "default": { + "allocation": "ascending", + "range": { + "beginning": 1006, + "ending": 1199 + } + }, + "title": "Internal VLAN Order" + }, + "ipv4_acls": { + "type": "array", + "description": "IPv4 extended access-lists supporting substitution on certain fields.\nThese access-lists can be referenced under node settings `l3_interfaces`, and will only be configured on devices where they are in use.\n\nThe substitution is useful when assigning the same access-list on multiple interfaces,\nbut where certain fields require unique values like the \"interface_ip\" or \"peer_ip\".\nWhen using substitution, the interface name will be appended to the ACL name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list name.\nWhen using substitution for any fields, the interface name will be appended to the ACL name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "This field supports substitution of the fields \"interface_ip\" for SVIs and both \"interface_ip\" and \"peer_ip\" for Layer 3 interfaces.\nAlternatively it can be set with a static value of \"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Source" + }, + "destination": { + "type": "string", + "description": "This field supports substitution of the fields \"interface_ip\" for SVIs and both \"interface_ip\" and \"peer_ip\" for Layer 3 interfaces.\nAlternatively it can be set with a static value of \"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Destination" + }, + "sequence": { + "type": "integer", + "description": "ACL entry sequence number.", + "title": "Sequence" + }, + "remark": { + "type": "string", + "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", + "title": "Remark" + }, + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "description": "ACL action.\nRequired except for remarks.", + "title": "Action" + }, + "protocol": { + "type": "string", + "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", + "title": "Protocol" + }, + "source_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Source Ports Match" + }, + "source_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP source port name or number." + }, + "title": "Source Ports" + }, + "destination_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Destination Ports Match" + }, + "destination_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP destination port name or number." + }, + "title": "Destination Ports" + }, + "tcp_flags": { + "type": "array", + "items": { + "type": "string", + "description": "TCP Flag Name." + }, + "title": "TCP Flags" + }, + "fragments": { + "type": "boolean", + "description": "Match non-head fragment packets.", + "title": "Fragments" + }, + "log": { + "type": "boolean", + "description": "Log matches against this rule.", + "title": "Log" + }, + "ttl": { + "type": "integer", + "description": "TTL value.", + "minimum": 0, + "maximum": 255, + "title": "TTL" + }, + "ttl_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq" + ], + "default": "eq", + "title": "TTL Match" + }, + "icmp_type": { + "type": "string", + "description": "Message type name/number for ICMP packets.", + "title": "ICMP Type" + }, + "icmp_code": { + "type": "string", + "description": "Message code for ICMP packets.", + "title": "ICMP Code" + }, + "nexthop_group": { + "type": "string", + "description": "nexthop-group name.", + "title": "Nexthop Group" + }, + "tracked": { + "type": "boolean", + "description": "Match packets in existing ICMP/UDP/TCP connections.", + "title": "Tracked" + }, + "dscp": { + "type": "string", + "description": "DSCP value or name.", + "title": "DSCP" + }, + "vlan_number": { + "type": "integer", + "title": "VLAN Number" + }, + "vlan_inner": { + "type": "boolean", + "default": false, + "title": "VLAN Inner" + }, + "vlan_mask": { + "type": "string", + "description": "0x000-0xFFF VLAN mask.", + "title": "VLAN Mask" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "description": "ACL Entries.", + "title": "Entries" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv4 Acls" + }, + "ipv6_mgmt_destination_networks": { + "description": "List of IPv6 prefixes to configure as static routes towards the OOB IPv6 Management interface gateway.\nReplaces the default route.\n", + "type": "array", + "items": { + "type": "string", + "description": "IPv6_network/Mask." + }, + "title": "IPv6 Management Destination Networks" + }, + "ipv6_mgmt_gateway": { + "type": "string", + "format": "ipv6", + "description": "OOB Management interface gateway in IPv6 format.\nUsed as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'.\n", + "title": "IPv6 Management Gateway" + }, + "is_deployed": { + "description": "If the device is already deployed in the fabric.\nWhen set to false, interfaces toward this device may be shutdown depending on the `shutdown_interfaces_towards_undeployed_peers` setting.\nFurthermore `eos_config_deploy_cvp` will not attempt to move or apply configurations to the device.\n", + "type": "boolean", + "default": true, + "title": "Is Deployed" + }, + "isis_advertise_passive_only": { + "type": "boolean", + "default": false, + "title": "ISIS Advertise Passive Only" + }, + "isis_area_id": { + "type": "string", + "default": "49.0001", + "title": "ISIS Area ID" + }, + "isis_default_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "default": "level-2", + "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level.\n", + "title": "ISIS Default Circuit Type" + }, + "isis_default_is_type": { + "title": "ISIS Default IS Type", + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "default": "level-2" + }, + "isis_default_metric": { + "type": "integer", + "default": 50, + "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level.\n", + "title": "ISIS Default Metric" + }, + "isis_maximum_paths": { + "description": "Number of path to configure in ECMP for ISIS.", + "type": "integer", + "title": "ISIS Maximum Paths" + }, + "isis_system_id_format": { + "title": "ISIS Default IS System-ID format", + "description": "Configures source for the system-id within the ISIS net id.\nBy default the `id` and `isis_system_id_prefix` fields configured under the node attributes are used to generate the system-id.\n\nIf `underlay_loopback` is selected then all node `isis_system_id_prefix` settings will be ignored and the loopback address will be used to generate the system-id.", + "type": "string", + "enum": [ + "node_id", + "underlay_loopback" + ], + "default": "node_id" + }, + "isis_ti_lfa": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "title": "Enabled" + }, + "protection": { + "type": "string", + "enum": [ + "link", + "node" + ], + "title": "Protection" + }, + "local_convergence_delay": { + "description": "Local convergence delay in milliseconds.", + "type": "integer", + "default": 10000, + "title": "Local Convergence Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ISIS TI LFA" + }, + "l3_edge": { + "type": "object", + "properties": { + "p2p_links_ip_pools": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "P2P pool name.", + "title": "Name" + }, + "ipv4_pool": { + "type": "string", + "description": "IPv4 address/Mask.", + "title": "IPv4 Pool" + }, + "prefix_size": { + "type": "integer", + "description": "Subnet mask size.", + "default": 31, + "minimum": 8, + "maximum": 31, + "title": "Prefix Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "P2P Links IP Pools" + }, + "p2p_links_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "P2P profile name. Any variable supported under `p2p_links` can be inherited from a profile.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", + "title": "ID" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "ip_pool": { + "type": "string", + "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", + "title": "IP Pool" + }, + "subnet": { + "type": "string", + "description": "IPv4 address/Mask. Subnet used on this P2P link.", + "title": "Subnet" + }, + "ip": { + "type": "array", + "description": "Specific IP addresses used on this P2P link.", + "items": { + "type": "string", + "description": "Node IPv4 address/Mask." + }, + "title": "IP" + }, + "ipv6_enable": { + "type": "boolean", + "default": false, + "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", + "title": "IPv6 Enable" + }, + "nodes": { + "type": "array", + "description": "Nodes where this link should be configured.", + "items": { + "type": "string", + "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" + }, + "title": "Nodes" + }, + "interfaces": { + "type": "array", + "description": "Interfaces where this link should be configured and Required unless using port-channels.", + "items": { + "type": "string", + "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" + }, + "title": "Interfaces" + }, + "as": { + "type": "array", + "description": "AS numbers for BGP.\nRequired with bgp peering.\n", + "items": { + "type": "string", + "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." + }, + "title": "As" + }, + "descriptions": { + "type": "array", + "description": "Interface description.", + "items": { + "type": "string" + }, + "title": "Descriptions" + }, + "include_in_underlay_protocol": { + "type": "boolean", + "default": true, + "description": "Add this interface to underlay routing protocol.", + "title": "Include In Underlay Protocol" + }, + "isis_hello_padding": { + "type": "boolean", + "default": false, + "title": "ISIS Hello Padding" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1", + "level-2", + "level-1-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "md5", + "text" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "mpls_ip": { + "type": "boolean", + "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", + "title": "MPLS IP" + }, + "mpls_ldp": { + "type": "boolean", + "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", + "title": "MPLS LDP" + }, + "mtu": { + "type": "integer", + "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", + "title": "MTU" + }, + "bfd": { + "type": "boolean", + "default": false, + "description": "Enable BFD (only considered for BGP).", + "title": "BFD" + }, + "ptp": { + "description": "PTP parameters.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "description": "Enable PTP.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow. Overrides `fabric_sflow` setting.", + "title": "Sflow" + }, + "underlay_multicast": { + "type": "boolean", + "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", + "default": false, + "title": "Underlay Multicast" + }, + "flow_tracking": { + "type": "object", + "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "qos_profile": { + "type": "string", + "description": "QOS service profile.", + "title": "QOS Profile" + }, + "macsec_profile": { + "type": "string", + "description": "MAC security profile.", + "title": "Macsec Profile" + }, + "port_channel": { + "description": "Port-channel parameters.", + "type": "object", + "properties": { + "mode": { + "type": "string", + "default": "active", + "title": "Mode" + }, + "nodes_child_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "node": { + "type": "string", + "title": "Node" + }, + "interfaces": { + "type": "array", + "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", + "title": "Channel ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "node" + ] + }, + "title": "Nodes Child Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "routing_protocol": { + "type": "string", + "enum": [ + "ebgp" + ], + "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", + "title": "Routing Protocol" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "P2P Links Profiles" + }, + "p2p_links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "description": "Nodes where this link should be configured.", + "items": { + "type": "string", + "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" + }, + "title": "Nodes" + }, + "profile": { + "type": "string", + "description": "P2P profile name. Profile defined under p2p_profiles.", + "title": "Profile" + }, + "id": { + "type": "integer", + "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", + "title": "ID" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "ip_pool": { + "type": "string", + "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", + "title": "IP Pool" + }, + "subnet": { + "type": "string", + "description": "IPv4 address/Mask. Subnet used on this P2P link.", + "title": "Subnet" + }, + "ip": { + "type": "array", + "description": "Specific IP addresses used on this P2P link.", + "items": { + "type": "string", + "description": "Node IPv4 address/Mask." + }, + "title": "IP" + }, + "ipv6_enable": { + "type": "boolean", + "default": false, + "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", + "title": "IPv6 Enable" + }, + "interfaces": { + "type": "array", + "description": "Interfaces where this link should be configured and Required unless using port-channels.", + "items": { + "type": "string", + "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" + }, + "title": "Interfaces" + }, + "as": { + "type": "array", + "description": "AS numbers for BGP.\nRequired with bgp peering.\n", + "items": { + "type": "string", + "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." + }, + "title": "As" + }, + "descriptions": { + "type": "array", + "description": "Interface description.", + "items": { + "type": "string" + }, + "title": "Descriptions" + }, + "include_in_underlay_protocol": { + "type": "boolean", + "default": true, + "description": "Add this interface to underlay routing protocol.", + "title": "Include In Underlay Protocol" + }, + "isis_hello_padding": { + "type": "boolean", + "default": false, + "title": "ISIS Hello Padding" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1", + "level-2", + "level-1-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "md5", + "text" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "mpls_ip": { + "type": "boolean", + "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", + "title": "MPLS IP" + }, + "mpls_ldp": { + "type": "boolean", + "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", + "title": "MPLS LDP" + }, + "mtu": { + "type": "integer", + "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", + "title": "MTU" + }, + "bfd": { + "type": "boolean", + "default": false, + "description": "Enable BFD (only considered for BGP).", + "title": "BFD" + }, + "ptp": { + "description": "PTP parameters.", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "description": "Enable PTP.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow. Overrides `fabric_sflow` setting.", + "title": "Sflow" + }, + "underlay_multicast": { + "type": "boolean", + "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", + "default": false, + "title": "Underlay Multicast" + }, + "flow_tracking": { + "type": "object", + "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "qos_profile": { + "type": "string", + "description": "QOS service profile.", + "title": "QOS Profile" + }, + "macsec_profile": { + "type": "string", + "description": "MAC security profile.", + "title": "Macsec Profile" + }, + "port_channel": { + "description": "Port-channel parameters.", + "type": "object", + "properties": { + "mode": { + "type": "string", + "default": "active", + "title": "Mode" + }, + "nodes_child_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "node": { + "type": "string", + "title": "Node" + }, + "interfaces": { + "type": "array", + "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", + "title": "Channel ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "node" + ] + }, + "title": "Nodes Child Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "routing_protocol": { + "type": "string", + "enum": [ + "ebgp" + ], + "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", + "title": "Routing Protocol" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", + "title": "Structured Config" + } + }, + "required": [ + "nodes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "P2P Links" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L3 Edge" + }, + "l3_interface_profiles": { + "type": "array", + "description": "Profiles to inherit common settings for l3_interfaces defined under the node type key.\nThese profiles will *not* work for `l3_interfaces` defined under `vrfs`.", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.", + "title": "Profile" + }, + "name": { + "type": "string", + "description": "Ethernet interface name like 'Ethernet2' or subinterface name like 'Ethernet2.42'.\nFor a subinterface, the parent physical interface is automatically created.", + "pattern": "Ethernet[\\d/]+(.[\\d]+)?", + "title": "Name" + }, + "description": { + "type": "string", + "description": "Interface description.\nIf not set a default description will be configured with '[[ ]]'.", + "title": "Description" + }, + "ip_address": { + "type": "string", + "description": "Node IPv4 address/Mask or 'dhcp'.", + "title": "IP Address" + }, + "dhcp_ip": { + "type": "string", + "description": "When the `ip_address` is `dhcp`, this optional field allows to indicate the expected\nIPv4 address (without mask) to be allocated on the interface if known.\nThis is not rendered in the configuration but can be used for substitution of 'interface_ip' in the Access-list\nset under `ipv4_acl_in` and `ipv4_acl_out`.", + "title": "DHCP IP" + }, + "public_ip": { + "type": "string", + "description": "Node IPv4 address (no mask).\n\nThis is used to get the public IP (if known) when the device is behind NAT.\nThis is only used for `wan_rr` routers (AutoVPN RRs and Pathfinders) to determine the Public IP\nwith the following preference:\n `wan_route_servers.path_groups.interfaces.ip_address`\n -> `l3_interfaces.public_ip`\n -> `l3_interfaces.ip_address`\n\nThe determined Public IP is used by WAN routers when peering with this interface.", + "title": "Public IP" + }, + "encapsulation_dot1q_vlan": { + "description": "For subinterfaces the dot1q vlan is derived from the interface name by default, but can also be specified.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Encapsulation Dot1Q VLAN" + }, + "dhcp_accept_default_route": { + "type": "boolean", + "default": true, + "description": "Accept a default route from DHCP if `ip_address` is set to `dhcp`.", + "title": "DHCP Accept Default Route" + }, + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable or Shutdown the interface.", + "title": "Enabled" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "peer": { + "type": "string", + "description": "The peer device name. Used for description and documentation.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "The peer device interface. Used for description and documentation.", + "title": "Peer Interface" + }, + "peer_ip": { + "type": "string", + "description": "The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.", + "title": "Peer IP" + }, + "bgp": { + "type": "object", + "description": "Enforce IPv4 BGP peering for the peer", + "properties": { + "peer_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Peer As" + }, + "ipv4_prefix_list_in": { + "type": "string", + "description": "Prefix List Name. Accept routes for only these prefixes from the peer.\nRequired for wan interfaces.", + "title": "IPv4 Prefix List In" + }, + "ipv4_prefix_list_out": { + "type": "string", + "description": "Prefix List Name. Advertise routes for only these prefixes.\nIf not specified, nothing would be advertised.", + "title": "IPv4 Prefix List Out" + } + }, + "required": [ + "peer_as" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ipv4_acl_in": { + "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports field substitution for \"interface_ip\" and \"peer_ip\".\nRequired for all WAN interfaces (`wan_carrier` is set) unless the carrier is marked as 'trusted' under `wan_carriers`.", + "type": "string", + "title": "IPv4 Acl In" + }, + "ipv4_acl_out": { + "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports field substitution for \"interface_ip\" and \"peer_ip\".", + "type": "string", + "title": "IPv4 Acl Out" + }, + "static_routes": { + "description": "Configure IPv4 static routes pointing to `peer_ip`.", + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4_network/Mask.", + "title": "Prefix" + } + }, + "required": [ + "prefix" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Routes" + }, + "qos_profile": { + "type": "string", + "description": "QOS service profile.", + "title": "QOS Profile" + }, + "wan_carrier": { + "type": "string", + "description": "The WAN carrier this interface is connected to.\nThis is used to infer the path-groups in which this interface should be configured.\nUnless the carrier is marked as 'trusted' under `wan_carriers`, `ipv4_acl_in` is also required on all WAN interfaces.", + "title": "Wan Carrier" + }, + "wan_circuit_id": { + "type": "string", + "description": "The WAN circuit ID for this interface.\nThis is not rendered in the configuration but used for WAN designs.", + "title": "Wan Circuit ID" + }, + "connected_to_pathfinder": { + "type": "boolean", + "default": true, + "description": "For a WAN interface (`wan_carrier` is set), allow to disable the static tunnel towards Pathfinders.", + "title": "Connected To Pathfinder" + }, + "cv_pathfinder_internet_exit": { + "description": "PREVIEW: This key is in preview mode", + "type": "object", + "properties": { + "policies": { + "type": "array", + "description": "List of Internet-exit policies using this interface as exit.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Internet-exit policy name.", + "title": "Name" + }, + "tunnel_interface_numbers": { + "type": "string", + "description": "Number range to use for Tunnel interfaces to an internet-exit service provider using this local interface.\nExamples: '1-3' or '100,200,300'", + "title": "Tunnel Interface Numbers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cv Pathfinder Internet Exit" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "flow_tracking": { + "type": "object", + "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.l3_interfaces` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for the Ethernet interface.", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "load_interval": { + "type": "integer", + "minimum": 0, + "maximum": 600, + "description": "Interval in seconds for updating interface counters.", + "title": "Load Interval" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "native_vlan": { + "type": "integer", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "tagged phone", + "untagged", + "untagged phone" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q", + "port-channel-member" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "address_locking": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Enable address locking for IPv4.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Enable address locking for IPv6.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "desired", + "on", + "off" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "error_correction_encoding": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "fire_code": { + "type": "boolean", + "title": "Fire Code" + }, + "reed_solomon": { + "type": "boolean", + "title": "Reed Solomon" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Error Correction Encoding" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulations are all optional and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask or \"dhcp\".", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IP Address Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "dhcp_client_accept_default_route": { + "type": "boolean", + "description": "Install default-route obtained via DHCP.", + "title": "DHCP Client Accept Default Route" + }, + "dhcp_server_ipv4": { + "type": "boolean", + "description": "Enable IPv4 DHCP server.", + "title": "DHCP Server IPv4" + }, + "dhcp_server_ipv6": { + "type": "boolean", + "description": "Enable IPv6 DHCP server.", + "title": "DHCP Server IPv6" + }, + "ip_helpers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_nat": { + "type": "object", + "properties": { + "service_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Service Profile" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "multicast": { + "type": "object", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "mac_security": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Security" + }, + "tcp_mss_ceiling": { + "type": "object", + "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", + "properties": { + "ipv4_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv4 Segment Size" + }, + "ipv6_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv6 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "channel_group": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "mode": { + "type": "string", + "enum": [ + "on", + "active", + "passive" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Channel Group" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "poe": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "profile": { + "type": "string", + "description": "Interface profile.", + "title": "Profile" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "congestion_drops": { + "type": "boolean", + "title": "Congestion Drops" + }, + "spanning_tree": { + "type": "boolean", + "title": "Spanning Tree" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "dot1x": { + "type": "object", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Value can be 60-4294967295 or 'server'.", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + }, + "eapol": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "authentication_failure_fallback_mba": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure Fallback Mba" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Eapol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "priority_flow_control": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "priorities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "title": "No Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "priority" + ] + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "lacp_timer": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "fast", + "normal" + ], + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 3000, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "lacp_port_priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "LACP Port Priority" + }, + "transceiver": { + "type": "object", + "properties": { + "frequency": { + "type": "string", + "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", + "title": "Frequency" + }, + "frequency_unit": { + "type": "string", + "enum": [ + "ghz" + ], + "description": "Unit of Transceiver Laser Frequency.", + "title": "Frequency Unit" + }, + "media": { + "type": "object", + "properties": { + "override": { + "type": "string", + "description": "Transceiver type.", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Media" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transceiver" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "sync_e": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "priority": { + "type": "string", + "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "port_profile": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Port Profile" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Uc TX Queues" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "max", + "max_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "TX Queues" + }, + "vrrp_ids": { + "type": "array", + "description": "VRRP model.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "switchport": { + "type": "object", + "properties": { + "port_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "mac_address_maximum": { + "type": "object", + "description": "Maximum number of MAC addresses allowed on the interface.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable port level check for port security (only in violation 'shutdown' mode).", + "title": "Disabled" + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "MAC address limit.", + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Maximum" + }, + "violation": { + "type": "object", + "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "shutdown", + "protect" + ], + "description": "Configure port security mode.", + "title": "Mode" + }, + "protect_log": { + "type": "boolean", + "description": "Log new addresses seen after limit is reached in protect mode.", + "title": "Protect Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Violation" + }, + "vlan_default_mac_address_maximum": { + "type": "integer", + "minimum": 0, + "maximum": 1000, + "description": "Default maximum MAC addresses for all VLANs on this interface.", + "title": "VLAN Default MAC Address Maximum" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", + "title": "Range" + }, + "mac_address_maximum": { + "type": "integer", + "title": "MAC Address Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "range" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Security" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "profile" + ] + }, + "title": "L3 Interface Profiles" + }, + "local_users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Username.", + "type": "string", + "title": "Name" + }, + "disabled": { + "type": "boolean", + "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", + "title": "Disabled" + }, + "privilege": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Initial privilege level with local EXEC authorization.\n", + "title": "Privilege" + }, + "role": { + "type": "string", + "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", + "title": "Role" + }, + "sha512_password": { + "type": "string", + "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", + "title": "SHA512 Password" + }, + "no_password": { + "type": "boolean", + "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", + "title": "No Password" + }, + "ssh_key": { + "type": "string", + "title": "SSH Key" + }, + "secondary_ssh_key": { + "type": "string", + "title": "Secondary SSH Key" + }, + "shell": { + "type": "string", + "description": "Specify shell for the user.\n", + "enum": [ + "/bin/bash", + "/bin/sh", + "/sbin/nologin" + ], + "title": "Shell" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Users" + }, + "mac_address_table": { + "type": "object", + "description": "MAC address-table aging time.\nUse to change the EOS default of 300.\n", + "properties": { + "aging_time": { + "type": "integer", + "description": "Aging time in seconds 10-1000000.\nEnter 0 to disable aging.\n", + "minimum": 0, + "maximum": 1000000, + "title": "Aging Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Table" + }, + "management_eapi": { + "description": "Default is HTTPS management eAPI enabled.\nThe VRF is set to < mgmt_interface_vrf >.\n", + "type": "object", + "properties": { + "enable_http": { + "type": "boolean", + "default": false, + "title": "Enable HTTP" + }, + "enable_https": { + "type": "boolean", + "default": true, + "title": "Enable Https" + }, + "default_services": { + "type": "boolean", + "title": "Default Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Eapi" + }, + "mgmt_destination_networks": { + "type": "array", + "description": "List of IPv4 prefixes to configure as static routes towards the OOB Management interface gateway.\nReplaces the default route.", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "Management Destination Networks" + }, + "mgmt_gateway": { + "type": "string", + "description": "OOB Management interface gateway in IPv4 format.\nUsed as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.\n", + "title": "Management Gateway" + }, + "mgmt_interface": { + "type": "string", + "default": "Management1", + "description": "OOB Management interface.", + "title": "Management Interface" + }, + "mgmt_interface_description": { + "type": "string", + "description": "Management interface description.\n", + "default": "oob_management", + "title": "Management Interface Description" + }, + "mgmt_interface_vrf": { + "type": "string", + "default": "MGMT", + "description": "OOB Management VRF.", + "title": "Management Interface VRF" + }, + "mgmt_vrf_routing": { + "type": "boolean", + "default": false, + "description": "Configure IP routing for the OOB Management VRF.", + "title": "Management VRF Routing" + }, + "mlag_ibgp_peering_vrfs": { + "type": "object", + "description": "On mlag leafs, an SVI interface is defined per vrf, to establish iBGP peering (required when there are MLAG leafs in topology).\nThe SVI id will be derived from the base vlan defined: mlag_ibgp_peering_vrfs.base_vlan + (vrf_id or vrf_vni) - 1.\nDepending on the values of vrf_id / vrf_vni it may be required to adjust the base_vlan to avoid overlaps or invalid vlan ids.\nThe SVI ip address derived from mlag_l3_peer_ipv4_pool is re-used across all iBGP peerings.\n", + "properties": { + "base_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4093, + "default": 3000, + "title": "Base VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG Ibgp Peering VRFs" + }, + "mlag_on_orphan_port_channel_downlink": { + "type": "boolean", + "description": "If `true` (default) an MLAG ID will always be configured on a Port-Channel downlink even if the downlink is only on one node in the MLAG pair.\nIf `false` an MLAG ID will only be configured on Port-Channel downlinks dual-homed to two MLAG switches.\nNote the default value will change to `false` in AVD version 5.0", + "default": true, + "title": "MLAG On Orphan Port Channel Downlink" + }, + "name_servers": { + "type": "array", + "description": "List of DNS servers. The VRF is set to < mgmt_interface_vrf >.", + "items": { + "type": "string", + "description": "IPv4 or IPv6 address." + }, + "title": "Name Servers" + }, + "network_ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "switches": { + "type": "array", + "description": "Regex matching the full hostname of one or more switches.\nThe regular expression must match the full hostname.\n", + "items": { + "type": "string" + }, + "title": "Switches" + }, + "switch_ports": { + "type": "array", + "description": "List of ranges using AVD range_expand syntax.\nFor example:\n\nswitch_ports:\n - Ethernet1\n - Ethernet2-48\n\nAll switch_ports ranges are expanded into individual port configurations.\n\nFor more details and examples of the `range_expand` syntax, see the [`arista.avd.range_expand` documentation](../../../docs/plugins/Filter_plugins/range_expand.md).\n", + "items": { + "type": "string" + }, + "title": "Switch Ports" + }, + "description": { + "type": "string", + "description": "Description to be used on all ports.", + "title": "Description" + }, + "speed": { + "type": "string", + "description": "Set adapter speed in the format `` or `forced ` or `auto `.\nIf not specified speed will be auto.\n", + "title": "Speed" + }, + "profile": { + "type": "string", + "description": "Port-profile name to inherit configuration.", + "title": "Profile" + }, + "enabled": { + "type": "boolean", + "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n", + "default": true, + "title": "Enabled" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "description": "Interface mode.", + "title": "Mode" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "native_vlan": { + "type": "integer", + "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n", + "minimum": 1, + "maximum": 4094, + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.", + "title": "Native VLAN Tag" + }, + "phone_vlan": { + "type": "integer", + "description": "Phone VLAN for a mode `trunk phone` port.\nRequires `mode: trunk phone` to be set.", + "minimum": 1, + "maximum": 4094, + "title": "Phone VLAN" + }, + "phone_trunk_mode": { + "type": "string", + "enum": [ + "tagged", + "untagged", + "tagged phone", + "untagged phone" + ], + "description": "Specify if the phone traffic is tagged or untagged.\nIf both data and phone traffic are untagged, MAC-Based VLAN Assignment (MBVA) is used, if supported by the model of switch.", + "title": "Phone Trunk Mode" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n", + "title": "Trunk Groups" + }, + "vlans": { + "type": "string", + "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.", + "title": "VLANs" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "received", + "send", + "on" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "qos_profile": { + "type": "string", + "description": "QOS profile name.", + "title": "QOS Profile" + }, + "ptp": { + "type": "object", + "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "title": "Enabled" + }, + "endpoint_role": { + "type": "string", + "default": "follower", + "enum": [ + "bmca", + "default", + "follower" + ], + "title": "Endpoint Role" + }, + "profile": { + "type": "string", + "default": "aes67-r16-2016", + "enum": [ + "aes67", + "aes67-r16-2016", + "smpte2059-2" + ], + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Configures sFlow on the interface. Overrides `fabric_sflow.endpoints` setting.", + "title": "Sflow" + }, + "flow_tracking": { + "type": "object", + "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.endpoints` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "link_tracking": { + "type": "object", + "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Tracking" + }, + "dot1x": { + "type": "object", + "description": "802.1x", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Range 60-4294967295 or \"server\".", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "poe": { + "type": "object", + "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "storm_control": { + "type": "object", + "description": "Storm control settings applied on port toward the endpoint.", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "monitor_sessions": { + "type": "array", + "description": "Used to define switchports as source or destination for monitoring sessions.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Session name.", + "title": "Name" + }, + "role": { + "type": "string", + "enum": [ + "source", + "destination" + ], + "title": "Role" + }, + "source_settings": { + "type": "object", + "properties": { + "direction": { + "type": "string", + "enum": [ + "rx", + "tx", + "both" + ], + "title": "Direction" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL name.", + "type": "string", + "title": "Name" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Settings" + }, + "session_settings": { + "type": "object", + "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n", + "properties": { + "encapsulation_gre_metadata_tx": { + "type": "boolean", + "title": "Encapsulation Gre Metadata TX" + }, + "header_remove_size": { + "type": "integer", + "description": "Number of bytes to remove from header.", + "title": "Header Remove Size" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL name.", + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + }, + "rate_limit_per_ingress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Ingress Chip" + }, + "rate_limit_per_egress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Egress Chip" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "truncate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "type": "integer", + "description": "Size in bytes.", + "title": "Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Session Settings" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Monitor Sessions" + }, + "ethernet_segment": { + "type": "object", + "description": "Settings for all or single-active EVPN multihoming.", + "properties": { + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n", + "title": "Short Esi" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n", + "title": "Redundancy" + }, + "designated_forwarder_algorithm": { + "type": "string", + "enum": [ + "auto", + "modulus", + "preference" + ], + "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n", + "title": "Designated Forwarder Algorithm" + }, + "designated_forwarder_preferences": { + "type": "array", + "description": "Manual preference as described above, required only for preference algorithm.", + "items": { + "type": "integer" + }, + "title": "Designated Forwarder Preferences" + }, + "dont_preempt": { + "type": "boolean", + "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.", + "title": "Dont Preempt" + } + }, + "required": [ + "short_esi" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Segment" + }, + "port_channel": { + "type": "object", + "description": "Used for port-channel adapter.", + "properties": { + "mode": { + "type": "string", + "description": "Port-Channel Mode.", + "enum": [ + "active", + "passive", + "on" + ], + "title": "Mode" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n", + "title": "Channel ID" + }, + "description": { + "type": "string", + "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n", + "title": "Description" + }, + "enabled": { + "type": "boolean", + "default": true, + "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n", + "title": "Enabled" + }, + "ptp_mpass": { + "type": "boolean", + "default": false, + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "PTP Mpass" + }, + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.", + "deprecated": true, + "title": "Short Esi" + }, + "lacp_fallback": { + "type": "object", + "description": "LACP fallback configuration.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "static", + "individual" + ], + "description": "Either static or individual mode is supported.\nIf the mode is set to \"individual\" the \"individual.profile\" setting must be defined.\n", + "title": "Mode" + }, + "individual": { + "type": "object", + "description": "Define parameters for port-channel member interfaces. Applies only if LACP fallback is set to \"individual\".", + "properties": { + "profile": { + "type": "string", + "description": "Port-profile name to inherit configuration.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Individual" + }, + "timeout": { + "type": "integer", + "description": "Timeout in seconds. EOS default is 90 seconds.", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Fallback" + }, + "lacp_timer": { + "type": "object", + "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".", + "properties": { + "mode": { + "type": "string", + "enum": [ + "normal", + "fast" + ], + "description": "LACP mode for interface members.", + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.", + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "subinterfaces": { + "type": "array", + "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n", + "items": { + "type": "object", + "properties": { + "number": { + "type": "integer", + "description": "Subinterface number.", + "title": "Number" + }, + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nRequired for multihomed port-channels with subinterfaces.\n", + "title": "Short Esi" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "VLAN ID to bridge.\nDefault is subinterface number.\n", + "title": "VLAN ID" + }, + "encapsulation_vlan": { + "type": "object", + "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n", + "properties": { + "client_dot1q": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Client Dot1Q" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Subinterfaces" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulation are all optional, and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "native_vlan": { + "type": "integer", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "mlag": { + "type": "integer", + "description": "MLAG ID.", + "minimum": 1, + "maximum": 2000, + "title": "MLAG" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "lacp_fallback_timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "default": 90, + "minimum": 0, + "maximum": 300, + "title": "LACP Fallback Timeout" + }, + "lacp_fallback_mode": { + "type": "string", + "enum": [ + "individual", + "static" + ], + "title": "LACP Fallback Mode" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "neighbor": { + "type": "string", + "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", + "title": "Neighbor" + }, + "per_link": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rfc_7130": { + "type": "boolean", + "title": "Rfc 7130" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Per Link" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "default": false, + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "esi": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", + "deprecated": true, + "title": "Esi" + }, + "rt": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", + "deprecated": true, + "title": "Rt" + }, + "lacp_id": { + "type": "string", + "description": "LACP ID with format xxxx.xxxx.xxxx.", + "title": "LACP ID" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + }, + "mpass": { + "type": "boolean", + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "Mpass" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 address/mask.", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "load_interval": { + "type": "integer", + "minimum": 0, + "maximum": 600, + "description": "Interval in seconds for updating interface counters.", + "title": "Load Interval" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "native_vlan": { + "type": "integer", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "tagged phone", + "untagged", + "untagged phone" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q", + "port-channel-member" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "address_locking": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Enable address locking for IPv4.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Enable address locking for IPv6.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "desired", + "on", + "off" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "error_correction_encoding": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "fire_code": { + "type": "boolean", + "title": "Fire Code" + }, + "reed_solomon": { + "type": "boolean", + "title": "Reed Solomon" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Error Correction Encoding" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulations are all optional and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask or \"dhcp\".", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IP Address Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "dhcp_client_accept_default_route": { + "type": "boolean", + "description": "Install default-route obtained via DHCP.", + "title": "DHCP Client Accept Default Route" + }, + "dhcp_server_ipv4": { + "type": "boolean", + "description": "Enable IPv4 DHCP server.", + "title": "DHCP Server IPv4" + }, + "dhcp_server_ipv6": { + "type": "boolean", + "description": "Enable IPv6 DHCP server.", + "title": "DHCP Server IPv6" + }, + "ip_helpers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_nat": { + "type": "object", + "properties": { + "service_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Service Profile" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "multicast": { + "type": "object", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "mac_security": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Security" + }, + "tcp_mss_ceiling": { + "type": "object", + "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", + "properties": { + "ipv4_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv4 Segment Size" + }, + "ipv6_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv6 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "channel_group": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "mode": { + "type": "string", + "enum": [ + "on", + "active", + "passive" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Channel Group" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "poe": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "profile": { + "type": "string", + "description": "Interface profile.", + "title": "Profile" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "congestion_drops": { + "type": "boolean", + "title": "Congestion Drops" + }, + "spanning_tree": { + "type": "boolean", + "title": "Spanning Tree" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "dot1x": { + "type": "object", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Value can be 60-4294967295 or 'server'.", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + }, + "eapol": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "authentication_failure_fallback_mba": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure Fallback Mba" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Eapol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "priority_flow_control": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "priorities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "title": "No Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "priority" + ] + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "lacp_timer": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "fast", + "normal" + ], + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 3000, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "lacp_port_priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "LACP Port Priority" + }, + "transceiver": { + "type": "object", + "properties": { + "frequency": { + "type": "string", + "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", + "title": "Frequency" + }, + "frequency_unit": { + "type": "string", + "enum": [ + "ghz" + ], + "description": "Unit of Transceiver Laser Frequency.", + "title": "Frequency Unit" + }, + "media": { + "type": "object", + "properties": { + "override": { + "type": "string", + "description": "Transceiver type.", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Media" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transceiver" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "sync_e": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "priority": { + "type": "string", + "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "port_profile": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Port Profile" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Uc TX Queues" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "max", + "max_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "TX Queues" + }, + "vrrp_ids": { + "type": "array", + "description": "VRRP model.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "switchport": { + "type": "object", + "properties": { + "port_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "mac_address_maximum": { + "type": "object", + "description": "Maximum number of MAC addresses allowed on the interface.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable port level check for port security (only in violation 'shutdown' mode).", + "title": "Disabled" + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "MAC address limit.", + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Maximum" + }, + "violation": { + "type": "object", + "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "shutdown", + "protect" + ], + "description": "Configure port security mode.", + "title": "Mode" + }, + "protect_log": { + "type": "boolean", + "description": "Log new addresses seen after limit is reached in protect mode.", + "title": "Protect Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Violation" + }, + "vlan_default_mac_address_maximum": { + "type": "integer", + "minimum": 0, + "maximum": 1000, + "description": "Default maximum MAC addresses for all VLANs on this interface.", + "title": "VLAN Default MAC Address Maximum" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", + "title": "Range" + }, + "mac_address_maximum": { + "type": "integer", + "title": "MAC Address Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "range" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Security" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Network Ports" + }, + "network_services_keys": { + "type": "array", + "description": "Network Services can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`network_services_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "default": [ + { + "name": "tenants" + } + ], + "title": "Network Services Keys" + }, + "new_network_services_bgp_vrf_config": { + "type": "boolean", + "description": "Set this key to `true` in the node type to generate full BGP configuration\nfor network services even when `evpn` is not in the address families\n(`evpn` is the default address family for `l3ls-evpn` but not for `l2ls`).\n\nThis is `false` by default except if `uplink_type` is set to `p2p-vrfs`, then the default value is `true`.\n\nThis may introduce breaking changes to your configuration.", + "title": "New Network Services BGP VRF Config" + }, + "node_type_keys": { + "type": "array", + "description": "Define Node Type Keys, to specify the properties of each node type in the fabric.\nThis allows for complete customization of the fabric layout and functionality.\n`node_type_keys` should be defined in top level group_var for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string", + "title": "Key" + }, + "type": { + "type": "string", + "description": "Type value matching this node_type_key.", + "title": "Type" + }, + "connected_endpoints": { + "type": "boolean", + "default": false, + "description": "Are endpoints connected to this node type.", + "title": "Connected Endpoints" + }, + "default_evpn_role": { + "type": "string", + "enum": [ + "none", + "client", + "server" + ], + "default": "none", + "description": "Default evpn_role. Can be overridden in topology vars.", + "title": "Default EVPN Role" + }, + "default_ptp_priority1": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "default": 127, + "description": "Default PTP priority 1", + "title": "Default PTP Priority1" + }, + "default_underlay_routing_protocol": { + "type": "string", + "default": "ebgp", + "description": "Set the default underlay routing_protocol.\nCan be overridden by setting \"underlay_routing_protocol\" host/group_vars.\n", + "enum": [ + "ebgp", + "ospf", + "ospf-ldp", + "isis", + "isis-sr", + "isis-ldp", + "isis-sr-ldp", + "none" + ], + "title": "Default Underlay Routing Protocol" + }, + "default_overlay_routing_protocol": { + "type": "string", + "default": "ebgp", + "enum": [ + "ebgp", + "ibgp", + "her", + "cvx", + "none" + ], + "description": "Set the default overlay routing_protocol.\nCan be overridden by setting \"overlay_routing_protocol\" host/group_vars.\n", + "title": "Default Overlay Routing Protocol" + }, + "default_mpls_overlay_role": { + "type": "string", + "enum": [ + "client", + "server", + "none" + ], + "description": "Set the default mpls overlay role.\nActing role in overlay control plane.\n", + "title": "Default MPLS Overlay Role" + }, + "default_overlay_address_families": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "evpn", + "vpn-ipv4", + "vpn-ipv6" + ] + }, + "description": "Set the default overlay address families.\n", + "title": "Default Overlay Address Families" + }, + "default_evpn_encapsulation": { + "type": "string", + "enum": [ + "mpls", + "vxlan" + ], + "description": "Set the default evpn encapsulation.\n", + "title": "Default EVPN Encapsulation" + }, + "default_wan_role": { + "type": "string", + "enum": [ + "client", + "server" + ], + "description": "Set the default WAN role.\n\nThis is used both for AutoVPN and Pathfinder designs.\nThat means if `wan_mode` root key is set to `autovpn` or `cv-pathfinder`.\n`server` indicates that the router is a route-reflector.\n\nOnly supported if `overlay_routing_protocol` is set to `ibgp`.\n", + "title": "Default Wan Role" + }, + "default_flow_tracker_type": { + "type": "string", + "enum": [ + "sampled", + "hardware" + ], + "description": "Set the default flow tracker type.", + "default": "sampled", + "title": "Default Flow Tracker Type" + }, + "mlag_support": { + "type": "boolean", + "default": false, + "description": "Can this node type support mlag.", + "title": "MLAG Support" + }, + "network_services": { + "description": "Will network services be deployed on this node type.", + "type": "object", + "properties": { + "l1": { + "type": "boolean", + "default": false, + "description": "??", + "title": "L1" + }, + "l2": { + "type": "boolean", + "default": false, + "description": "Vlans", + "title": "L2" + }, + "l3": { + "type": "boolean", + "default": false, + "description": "VRFs, SVIs (if l2 is true).\nOnly supported with underlay_router.\n", + "title": "L3" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network Services" + }, + "underlay_router": { + "type": "boolean", + "default": true, + "description": "Is this node type a L3 device.", + "title": "Underlay Router" + }, + "uplink_type": { + "type": "string", + "enum": [ + "p2p", + "port-channel", + "p2p-vrfs", + "lan" + ], + "default": "p2p", + "description": "`uplink_type` must be `p2p`, `p2p-vrfs` or `lan` if `vtep` or `underlay_router` is true.\n\nFor `p2p-vrfs`, the uplinks are configured as L3 interfaces with a subinterface for each VRF\nin `network_services` present on both the uplink and the downlink switch.\nThe subinterface ID is the `vrf_id`.\n'underlay_router' and 'network_services.l3' must be set to true.\nVRF `default` is always configured on the physical interface using the underlay routing protocol.\nAll subinterfaces use the same IP address as the physical interface.\nMulticast is not supported.\nOnly BGP is supported for subinterfaces.\n\nFor `lan`, a single uplink interface is supported and will be configured as an L3 Interface with\nsubinterfaces for each SVI defined under the VRFs in `network_services` as long as the uplink switch also\nhas the VLAN permitted by tag/tenant filtering.", + "title": "Uplink Type" + }, + "vtep": { + "type": "boolean", + "default": false, + "description": "Is this switch an EVPN VTEP.", + "title": "Vtep" + }, + "mpls_lsr": { + "type": "boolean", + "default": false, + "description": "Is this switch an MPLS LSR.", + "title": "MPLS Lsr" + }, + "ip_addressing": { + "type": "object", + "description": "Override ip_addressing templates.", + "properties": { + "python_module": { + "type": "string", + "description": "Custom Python Module to import for IP addressing.", + "title": "Python Module" + }, + "python_class_name": { + "type": "string", + "description": "Name of Custom Python Class to import for IP addressing.", + "title": "Python Class Name" + }, + "router_id": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Router ID" + }, + "router_id_ipv6": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Router ID IPv6" + }, + "mlag_ip_primary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG IP Primary" + }, + "mlag_ip_secondary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG IP Secondary" + }, + "mlag_l3_ip_primary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG L3 IP Primary" + }, + "mlag_l3_ip_secondary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG L3 IP Secondary" + }, + "mlag_ibgp_peering_ip_primary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG Ibgp Peering IP Primary" + }, + "mlag_ibgp_peering_ip_secondary": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG Ibgp Peering IP Secondary" + }, + "p2p_uplinks_ip": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "P2P Uplinks IP" + }, + "p2p_uplinks_peer_ip": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "P2P Uplinks Peer IP" + }, + "vtep_ip_mlag": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Vtep IP MLAG" + }, + "vtep_ip": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Vtep IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Addressing" + }, + "interface_descriptions": { + "type": "object", + "description": "Override interface_descriptions templates.\nIf description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.\n", + "properties": { + "python_module": { + "type": "string", + "description": "Custom Python Module to import for interface descriptions.", + "title": "Python Module" + }, + "python_class_name": { + "type": "string", + "description": "Name of Custom Python Class to import for interface descriptions.", + "title": "Python Class Name" + }, + "underlay_ethernet_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Underlay Ethernet Interfaces" + }, + "underlay_port_channel_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Underlay Port Channel Interfaces" + }, + "mlag_ethernet_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG Ethernet Interfaces" + }, + "mlag_port_channel_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "MLAG Port Channel Interfaces" + }, + "connected_endpoints_ethernet_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Connected Endpoints Ethernet Interfaces" + }, + "connected_endpoints_port_channel_interfaces": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Connected Endpoints Port Channel Interfaces" + }, + "overlay_loopback_interface": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Overlay Loopback Interface" + }, + "vtep_loopback_interface": { + "type": "string", + "description": "Path to Custom J2 template.", + "title": "Vtep Loopback Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface Descriptions" + }, + "cv_tags_topology_type": { + "description": "PREVIEW: This key is currently not supported\nType that CloudVision should use when generating the Topology.", + "type": "string", + "enum": [ + "leaf", + "spine", + "core", + "edge" + ], + "title": "Cv Tags Topology Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "key" + ] + }, + "title": "Node Type Keys" + }, + "ntp_settings": { + "type": "object", + "description": "NTP settings", + "properties": { + "server_vrf": { + "type": "string", + "description": "EOS only supports NTP servers in one VRF, so this VRF is used for all NTP servers and one local-interface.\n- `use_mgmt_interface_vrf` will configure the NTP server(s) under the VRF set with `mgmt_interface_vrf` and set the `mgmt_interface` as NTP local-interface.\n An error will be raised if `mgmt_ip` or `ipv6_mgmt_ip` are not configured for the device.\n- `use_inband_mgmt_vrf` will configure the NTP server(s) under the VRF set with `inband_mgmt_vrf` and set the `inband_mgmt_interface` as NTP local-interface.\n An error will be raised if inband management is not configured for the device.\n- Any other string will be used directly as the VRF name but local interface must be set with `custom_structured_configuration_ntp` if needed.\nIf not set, the VRF is automatically picked up from the global setting `default_mgmt_method`.", + "title": "Server VRF" + }, + "servers": { + "type": "array", + "description": "The first server is always set as \"preferred\".", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", + "title": "Name" + }, + "burst": { + "type": "boolean", + "title": "Burst" + }, + "iburst": { + "type": "boolean", + "title": "Iburst" + }, + "key": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key" + }, + "maxpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of maxpoll between 3 - 17 (Logarithmic).", + "title": "Maxpoll" + }, + "minpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of minpoll between 3 - 17 (Logarithmic).", + "title": "Minpoll" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 4, + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Servers" + }, + "authenticate": { + "type": "boolean", + "title": "Authenticate" + }, + "authenticate_servers_only": { + "type": "boolean", + "title": "Authenticate Servers Only" + }, + "authentication_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65534, + "description": "Key identifier.", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Obfuscated key.", + "title": "Key" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "title": "Key Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Authentication Keys" + }, + "trusted_keys": { + "type": "string", + "description": "List of trusted-keys as string ex. 10-12,15.", + "title": "Trusted Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "NTP Settings" + }, + "only_local_vlan_trunk_groups": { + "type": "boolean", + "description": "A vlan can have many trunk_groups assigned.\nTo avoid unneeded configuration changes on all leaf switches when a new trunk group is added,\nthis feature will only configure the vlan trunk groups matched with local connected_endpoints.\nSee \"Details on only_local_vlan_trunk_groups\" below.\nRequires \"enable_trunk_groups: true\".\n", + "default": false, + "title": "Only Local VLAN Trunk Groups" + }, + "overlay_cvx_servers": { + "description": "List of CVX vxlan overlay controllers.\nRequired if overlay_routing_protocol == CVX.\nCVX servers (VMs) are peering using their management interface, so mgmt_ip must be set for all CVX servers.\n", + "type": "array", + "items": { + "type": "string", + "description": "'inventory_hostname' of CVX server.\n" + }, + "title": "Overlay CVX Servers" + }, + "overlay_her_flood_list_per_vni": { + "type": "boolean", + "description": "When using Head-End Replication, configure flood-lists per VNI.\nBy default HER will be configured with a common flood-list containing all VTEPs.\nThis behavior can be changed to per-VNI flood-lists by setting `overlay_her_flood_list_per_vni: true`.\nThis will make `eos_designs` consider configured VLANs per VTEP, and only include the relevant VTEPs to each VNI's flood-list.\n", + "default": false, + "title": "Overlay Her Flood List Per Vni" + }, + "overlay_her_flood_list_scope": { + "type": "string", + "description": "When using Head-End Replication, set the scope of flood-lists to Fabric or DC.\nBy default all VTEPs in the Fabric (part of the inventory group referenced by \"fabric_name\") are added to the flood-lists.\nThis can be changed to all VTEPs in the DC (sharing the same \"dc_name\" value).\nThis is useful if Border Leaf switches are dividing the VXLAN overlay into separate domains.\n", + "enum": [ + "fabric", + "dc" + ], + "default": "fabric", + "title": "Overlay Her Flood List Scope" + }, + "overlay_loopback_description": { + "description": "Customize the description on overlay interface Loopback0.", + "type": "string", + "title": "Overlay Loopback Description" + }, + "overlay_mlag_rfc5549": { + "description": "IPv6 Unnumbered for MLAG iBGP connections.\nRequires \"underlay_rfc5549: true\".\n", + "type": "boolean", + "default": false, + "title": "Overlay MLAG Rfc5549" + }, + "overlay_rd_type": { + "type": "object", + "description": "Configuration options for the Administrator subfield (first part of RD) and the Assigned Number subfield (second part of RD).\n\nBy default Route Distinguishers (RD) are set to:\n- `:` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VLAN-Aware Bundles defined under 'evpn_vlan_bundles'.\n- `:` for VRFs.\n\nNote:\nRD is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using loopback or 32-bit ASN/number the assigned number can only be a 16-bit number. This may be a problem with large VNIs.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n", + "properties": { + "admin_subfield": { + "type": "string", + "description": "The method for deriving RD Administrator subfield (first part of RD):\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n", + "default": "overlay_loopback_ip", + "title": "Admin Subfield" + }, + "admin_subfield_offset": { + "type": "string", + "description": "Offset can only be used if admin_subfield is an integer between <0-4294967295> or 'switch_id'.\nTotal value of admin_subfield + admin_subfield_offset must be <= 4294967295.\n", + "title": "Admin Subfield Offset" + }, + "vrf_admin_subfield": { + "type": "string", + "description": "The method for deriving RD Administrator subfield (first part of RD) for VRF services:\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n", + "title": "VRF Admin Subfield" + }, + "vrf_admin_subfield_offset": { + "type": "string", + "description": "Offset can only be used if 'vrf_admin_subfield' is an integer between <0-4294967295> or 'switch_id'.\nTotal value of 'vrf_admin_subfield' + 'vrf_admin_subfield_offset' must be <= 4294967295.\n", + "title": "VRF Admin Subfield Offset" + }, + "vlan_assigned_number_subfield": { + "type": "string", + "enum": [ + "mac_vrf_id", + "mac_vrf_vni", + "vlan_id" + ], + "default": "mac_vrf_id", + "description": "The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order).\n", + "title": "VLAN Assigned Number Subfield" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Overlay Rd Type" + }, + "overlay_routing_protocol": { + "description": "- The following overlay routing protocols are supported:\n - eBGP: Configures fabric with eBGP, default for l3ls-evpn design.\n - iBGP: Configured fabric with iBGP, only supported with OSPF or ISIS variants in underlay, default for mpls design.\n - CVX: Configures fabric to leverage CloudVision eXchange as the overlay controller.\n - HER: Configures fabric with Head-End Replication, configures static VXLAN flood-lists instead of using a dynamic overlay protocol.\n - none: No overlay configuration will be generated, default for l2ls design.\n", + "type": "string", + "enum": [ + "ebgp", + "ibgp", + "cvx", + "her", + "none" + ], + "default": "ebgp", + "title": "Overlay Routing Protocol" + }, + "overlay_routing_protocol_address_family": { + "type": "string", + "description": "When set to `ipv6`, enable overlay EVPN peering with IPv6 addresses.\nThis feature depends on underlay_ipv6 variable. As of today, only RFC5549 is capable to transport IPv6 in the underlay.\n", + "enum": [ + "ipv4", + "ipv6" + ], + "default": "ipv4", + "title": "Overlay Routing Protocol Address Family" + }, + "overlay_rt_type": { + "type": "object", + "description": "Configuration options for the Administrator subfield (first part of RT) and the Assigned Number subfield (second part of RT).\n\nBy default Route Targets (RT) are set to:\n- `<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>:<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VLAN-Aware Bundles defined under 'evpn_vlan_bundles'.\n- `:` for VRFs.\n\nNotes:\nRT is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using 32-bit ASN/number the VNI can only be a 16-bit number. Alternatively use vlan_id/vrf_id as assigned number.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n", + "properties": { + "admin_subfield": { + "type": "string", + "description": "The method for deriving RT Administrator subfield (first part of RT):\n- 'vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id` for VLANs, `(vrf_vni or vrf_id)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'id' means `vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\nThe 'vrf_id' and 'vrf_vni' methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\nThe 'vrf_id', 'vrf_vni' and 'id' methods can be overridden per bundle defined under `evpn_vlan_bundles` using 'rt_override'.\n", + "default": "vrf_id", + "title": "Admin Subfield" + }, + "vrf_admin_subfield": { + "type": "string", + "description": "The method for deriving RT Administrator subfield (first part of RT) for VRF services:\n- 'id' means `(vrf_id or vrf_vni)`.\n- 'vrf_id' means `(vrf_id or vrf_vni)`.\n- 'vrf_vni' means `(vrf_vni or vrf_id)`.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n", + "default": "vrf_id", + "title": "VRF Admin Subfield" + }, + "vlan_assigned_number_subfield": { + "type": "string", + "enum": [ + "mac_vrf_id", + "mac_vrf_vni", + "vlan_id" + ], + "default": "mac_vrf_id", + "description": "The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\n", + "title": "VLAN Assigned Number Subfield" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Overlay Rt Type" + }, + "p2p_uplinks_mtu": { + "description": "Point to Point Links MTU.", + "type": "integer", + "minimum": 68, + "maximum": 65535, + "default": 9214, + "title": "P2P Uplinks MTU" + }, + "p2p_uplinks_qos_profile": { + "description": "QOS Profile assigned on all infrastructure links.", + "type": "string", + "title": "P2P Uplinks QOS Profile" + }, + "platform_settings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "platforms": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Platforms" + }, + "trident_forwarding_table_partition": { + "type": "string", + "description": "Only applied when evpn_multicast is true.", + "title": "Trident Forwarding Table Partition" + }, + "reload_delay": { + "type": "object", + "properties": { + "mlag": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "description": "In seconds.", + "title": "MLAG" + }, + "non_mlag": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "description": "In seconds.", + "title": "Non MLAG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reload Delay" + }, + "tcam_profile": { + "type": "string", + "title": "TCAM Profile" + }, + "lag_hardware_only": { + "type": "boolean", + "title": "LAG Hardware Only" + }, + "default_interface_mtu": { + "type": "integer", + "description": "Default interface MTU configured on EOS under \"interface defaults\".\nTakes precedence over the root key \"default_interface_mtu\".\n", + "minimum": 68, + "maximum": 65535, + "title": "Default Interface MTU" + }, + "feature_support": { + "type": "object", + "properties": { + "queue_monitor_length_notify": { + "type": "boolean", + "default": true, + "title": "Queue Monitor Length Notify" + }, + "interface_storm_control": { + "type": "boolean", + "default": true, + "title": "Interface Storm Control" + }, + "poe": { + "type": "boolean", + "default": false, + "title": "PoE" + }, + "per_interface_mtu": { + "type": "boolean", + "default": true, + "description": "Support for configuration of per interface MTU for p2p links, MLAG SVIs and Network Services.\nEffectively this means that all settings regarding interface MTU will be ignored if this is false.\nPlatforms without support for per interface MTU can use a single default interface MTU setting. Set this via \"default_interface_mtu\"\n", + "title": "Per Interface MTU" + }, + "bgp_update_wait_install": { + "type": "boolean", + "default": true, + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\nCan be overridden by setting \"bgp_update_wait_install\" host/group_vars.\n", + "title": "BGP Update Wait Install" + }, + "bgp_update_wait_for_convergence": { + "type": "boolean", + "default": true, + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\nCan be overridden by setting \"bgp_update_wait_for_convergence\" host/group_vars.\n", + "title": "BGP Update Wait For Convergence" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Feature Support" + }, + "management_interface": { + "type": "string", + "default": "Management1", + "title": "Management Interface" + }, + "security_entropy_sources": { + "description": "Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys.", + "type": "object", + "properties": { + "hardware": { + "type": "boolean", + "description": "Use a hardware based source.", + "title": "Hardware" + }, + "haveged": { + "type": "boolean", + "description": "Use the HAVEGE algorithm.", + "title": "Haveged" + }, + "cpu_jitter": { + "type": "boolean", + "description": "Use the Jitter RNG algorithm of a CPU based source.", + "title": "CPU Jitter" + }, + "hardware_exclusive": { + "type": "boolean", + "description": "Only use entropy from the hardware source.", + "title": "Hardware Exclusive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Security Entropy Sources" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config for eos_cli_config_gen.", + "properties": { + "aaa_accounting": { + "type": "object", + "properties": { + "exec": { + "type": "object", + "properties": { + "console": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Console" + }, + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exec" + }, + "system": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "System" + }, + "dot1x": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "commands": { + "type": "object", + "properties": { + "console": { + "type": "array", + "items": { + "type": "object", + "properties": { + "commands": { + "type": "string", + "description": "Privilege level 'all' or 0-15.", + "title": "Commands" + }, + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Console" + }, + "default": { + "type": "array", + "items": { + "type": "object", + "properties": { + "commands": { + "type": "string", + "description": "Privilege level 'all' or 0-15.", + "title": "Commands" + }, + "type": { + "type": "string", + "enum": [ + "none", + "start-stop", + "stop-only" + ], + "title": "Type" + }, + "group": { + "description": "Group Name.", + "type": "string", + "title": "Group" + }, + "logging": { + "type": "boolean", + "title": "Logging" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Accounting" + }, + "aaa_authentication": { + "type": "object", + "properties": { + "login": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Login authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + }, + "console": { + "type": "string", + "description": "Console authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Console" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Login" + }, + "enable": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Enable authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Enable" + }, + "dot1x": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "802.1x authentication method(s) as a string.\nExamples:\n- \"group radius\"\n- \"group MYGROUP group radius\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "policies": { + "type": "object", + "properties": { + "on_failure_log": { + "type": "boolean", + "title": "On Failure Log" + }, + "on_success_log": { + "type": "boolean", + "title": "On Success Log" + }, + "local": { + "type": "object", + "properties": { + "allow_nopassword": { + "type": "boolean", + "title": "Allow Nopassword" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local" + }, + "lockout": { + "type": "object", + "properties": { + "failure": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Failure" + }, + "duration": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Duration" + }, + "window": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Window" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lockout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Authentication" + }, + "aaa_authorization": { + "type": "object", + "properties": { + "policy": { + "type": "object", + "properties": { + "local_default_role": { + "type": "string", + "title": "Local Default Role" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy" + }, + "exec": { + "type": "object", + "properties": { + "default": { + "type": "string", + "description": "Exec authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exec" + }, + "config_commands": { + "type": "boolean", + "title": "Config Commands" + }, + "serial_console": { + "type": "boolean", + "title": "Serial Console" + }, + "dynamic": { + "type": "object", + "properties": { + "dot1x_additional_groups": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "dot1x Additional Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic" + }, + "commands": { + "type": "object", + "properties": { + "all_default": { + "type": "string", + "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\n", + "title": "All Default" + }, + "privilege": { + "type": "array", + "items": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Privilege level(s) 0-15.", + "title": "Level" + }, + "default": { + "type": "string", + "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"\n", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Privilege" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Authorization" + }, + "aaa_root": { + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "sha512_password": { + "type": "string", + "title": "SHA512 Password" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA Root" + }, + "aaa_server_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Group name.", + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "tacacs+", + "radius", + "ldap" + ], + "title": "Type" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "server": { + "type": "string", + "description": "Hostname or IP address.", + "title": "Server" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Servers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "AAA Server Groups" + }, + "access_lists": { + "type": "array", + "title": "IP Extended Access-Lists (legacy model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "permit_response_traffic": { + "type": "string", + "enum": [ + "nat" + ], + "description": "Permit response traffic automatically based on NAT translations.\nMinimum EOS version requirement 4.32.2F.", + "title": "Permit Response Traffic" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ip any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "address_locking": { + "type": "object", + "properties": { + "dhcp_servers_ipv4": { + "type": "array", + "items": { + "type": "string", + "description": "DHCP server IPv4 address." + }, + "title": "DHCP Servers IPv4" + }, + "disabled": { + "type": "boolean", + "description": "Disable IP locking on configured ports.", + "title": "Disabled" + }, + "leases": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "IP address.", + "title": "IP" + }, + "mac": { + "type": "string", + "description": "MAC address (hhhh.hhhh.hhhh or hh:hh:hh:hh:hh:hh).", + "title": "MAC" + } + }, + "required": [ + "ip", + "mac" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Leases" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "locked_address": { + "type": "object", + "properties": { + "expiration_mac_disabled": { + "type": "boolean", + "description": "Configure deauthorizing locked addresses upon MAC aging out.", + "title": "Expiration MAC Disabled" + }, + "ipv4_enforcement_disabled": { + "type": "boolean", + "description": "Configure enforcement for locked IPv4 addresses.", + "title": "IPv4 Enforcement Disabled" + }, + "ipv6_enforcement_disabled": { + "type": "boolean", + "description": "Configure enforcement for locked IPv6 addresses.", + "title": "IPv6 Enforcement Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Locked Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "agents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Agent name.", + "title": "Name" + }, + "environment_variables": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Environment variable name.", + "title": "Name" + }, + "value": { + "type": "string", + "description": "Environment variable value.", + "title": "Value" + } + }, + "required": [ + "value", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Environment Variables" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Agents" + }, + "aliases": { + "type": "string", + "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```\n", + "title": "Aliases" + }, + "application_traffic_recognition": { + "type": "object", + "description": "Application traffic recognition configuration.", + "properties": { + "categories": { + "type": "array", + "description": "List of categories.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Category name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Categories" + }, + "field_sets": { + "type": "object", + "properties": { + "l4_ports": { + "type": "array", + "description": "L4 port field-set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "L4 port field-set name.", + "title": "Name" + }, + "port_values": { + "type": "array", + "items": { + "type": "string", + "description": "Port values or range of port values.\nPort values are between 0 and 65535." + }, + "title": "Port Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Ports" + }, + "ipv4_prefixes": { + "type": "array", + "description": "IPv4 prefix field set.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 prefix field-set name.", + "title": "Name" + }, + "prefix_values": { + "type": "array", + "items": { + "type": "string", + "description": "IP prefix (ex 1.2.3.0/24)." + }, + "title": "Prefix Values" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Field Sets" + }, + "applications": { + "type": "object", + "properties": { + "ipv4_applications": { + "type": "array", + "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "src_prefix_set_name": { + "type": "string", + "description": "Source prefix set name.", + "title": "Src Prefix Set Name" + }, + "dest_prefix_set_name": { + "type": "string", + "description": "Destination prefix set name.", + "title": "Dest Prefix Set Name" + }, + "dscp_ranges": { + "type": "array", + "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", + "items": { + "type": "string", + "description": "DSCP value or range syntax.", + "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" + }, + "title": "DSCP Ranges" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4 Applications" + }, + "l4_applications": { + "type": "array", + "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application name.", + "title": "Name" + }, + "protocols": { + "type": "array", + "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", + "items": { + "type": "string", + "enum": [ + "ahp", + "esp", + "icmp", + "igmp", + "ospf", + "pim", + "rsvp", + "tcp", + "udp", + "vrrp" + ] + }, + "title": "Protocols" + }, + "protocol_ranges": { + "type": "array", + "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", + "items": { + "type": "string" + }, + "title": "Protocol Ranges" + }, + "udp_src_port_set_name": { + "type": "string", + "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", + "title": "UDP Src Port Set Name" + }, + "tcp_src_port_set_name": { + "type": "string", + "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", + "title": "TCP Src Port Set Name" + }, + "udp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", + "title": "UDP Dest Port Set Name" + }, + "tcp_dest_port_set_name": { + "type": "string", + "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", + "title": "TCP Dest Port Set Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "L4 Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Applications" + }, + "application_profiles": { + "type": "array", + "description": "Group of applications.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Profile name.", + "title": "Name" + }, + "applications": { + "type": "array", + "description": "List of applications part of the application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application Name.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Applications" + }, + "application_transports": { + "type": "array", + "description": "List of transport protocols.", + "items": { + "type": "string", + "description": "Transport name.", + "enum": [ + "http", + "https", + "udp", + "tcp", + "ip", + "ip6", + "ssl", + "rtp", + "sctp", + "quic" + ] + }, + "title": "Application Transports" + }, + "categories": { + "type": "array", + "description": "Categories under this application profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of a category.", + "title": "Name" + }, + "service": { + "type": "string", + "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", + "enum": [ + "audio-video", + "chat", + "default", + "file-transfer", + "networking-protocols", + "peer-to-peer", + "software-update" + ], + "title": "Service" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Categories" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Application Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Application Traffic Recognition" + }, + "arp": { + "type": "object", + "properties": { + "persistent": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Restore the ARP cache after reboot.", + "title": "Enabled" + }, + "refresh_delay": { + "type": "integer", + "description": "Time to wait in seconds before refreshing the ARP cache after reboot (EOS default 600).", + "minimum": 600, + "maximum": 3600, + "title": "Refresh Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Persistent" + }, + "aging": { + "type": "object", + "properties": { + "timeout_default": { + "description": "Timeout in seconds.", + "type": "integer", + "minimum": 60, + "maximum": 65535, + "title": "Timeout Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Aging" + }, + "static_entries": { + "type": "array", + "description": "Static ARP entries.", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "ARP entry IPv4 address.", + "title": "IPv4 Address" + }, + "vrf": { + "type": "string", + "description": "ARP entry VRF.", + "title": "VRF" + }, + "mac_address": { + "type": "string", + "description": "ARP entry MAC address.", + "pattern": "^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$", + "title": "MAC Address" + } + }, + "required": [ + "ipv4_address", + "mac_address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ARP" + }, + "as_path": { + "type": "object", + "properties": { + "regex_mode": { + "type": "string", + "enum": [ + "asn", + "string" + ], + "title": "Regex Mode" + }, + "access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access List Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "match": { + "type": "string", + "description": "Regex To Match.", + "title": "Match" + }, + "origin": { + "type": "string", + "enum": [ + "any", + "egp", + "igp", + "incomplete" + ], + "default": "any", + "title": "Origin" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Access Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "avd_data_conversion_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug", + "quiet" + ], + "default": "debug", + "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", + "title": "AVD Data Conversion Mode" + }, + "avd_data_validation_mode": { + "type": "string", + "enum": [ + "disabled", + "error", + "warning", + "info", + "debug" + ], + "default": "warning", + "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", + "title": "AVD Data Validation Mode" + }, + "banners": { + "type": "object", + "properties": { + "login": { + "type": "string", + "description": "Multiline string ending with EOF on the last line.", + "title": "Login" + }, + "motd": { + "type": "string", + "description": "Multiline string ending with EOF on the last line.", + "title": "Motd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Banners" + }, + "bgp_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "neighbors": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Neighbors" + }, + "bgp_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Profile Name." + }, + "title": "BGP Maintenance Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "BGP Groups" + }, + "boot": { + "title": "System Boot Settings", + "description": "Set the Aboot password.\n", + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "default": "sha512", + "title": "Hash Algorithm" + }, + "key": { + "description": "Hashed Password.", + "type": "string", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "class_maps": { + "type": "object", + "title": "QOS Class-maps", + "properties": { + "pbr": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class-Map Name.", + "title": "Name" + }, + "ip": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "Standard Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "PBR" + }, + "qos": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class-Map Name.", + "title": "Name" + }, + "vlan": { + "type": "string", + "description": "VLAN value(s) or range(s) of VLAN values.", + "title": "VLAN" + }, + "cos": { + "type": "string", + "description": "CoS value(s) or range(s) of CoS values.", + "title": "COS" + }, + "ip": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "IPv4 Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP" + }, + "ipv6": { + "type": "object", + "properties": { + "access_group": { + "type": "string", + "description": "IPv6 Access-List Name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "clock": { + "type": "object", + "properties": { + "timezone": { + "type": "string", + "title": "Timezone" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Clock" + }, + "community_lists": { + "type": "array", + "title": "Community Lists (legacy model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit GSHUT 65123:123\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "config_comment": { + "type": "string", + "description": "Add a comment to provide information about the configuration.\nThis comment will be rendered at the top of the generated configuration.", + "title": "Config Comment" + }, + "custom_templates": { + "type": "array", + "title": "Extensibility with Custom Templates", + "description": "- Custom templates can be added below the playbook directory.\n- If a location above the directory is desired, a symbolic link can be used.\n- Example under the `playbooks` directory create symbolic link with the following command:\n\n ```bash\n ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n ```\n\n- The output will be rendered at the end of the configuration.\n- The order of custom templates in the list can be important if they overlap.\n- It is recommended to use a `!` delimiter at the top of each custom template.\n\nAdd `custom_templates` to group/host variables:\n", + "items": { + "type": "string", + "description": "Template relative path below playbook directory." + } + }, + "cvx": { + "type": "object", + "description": "CVX server features are not supported on physical switches. See `management_cvx` for client configurations.", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "peer_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or hostname." + }, + "title": "Peer Hosts" + }, + "services": { + "type": "object", + "properties": { + "mcs": { + "type": "object", + "properties": { + "redis": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "Hashed password using the password_type.", + "title": "Password" + }, + "password_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Password Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redis" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MCS" + }, + "vxlan": { + "type": "object", + "description": "VXLAN Controller service.", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vtep_mac_learning": { + "type": "string", + "enum": [ + "control-plane", + "data-plane" + ], + "title": "Vtep MAC Learning" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CVX" + }, + "daemon_terminattr": { + "type": "object", + "description": "You can either provide a list of IPs/FQDNs to target on-premise Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming to multiple clusters both on-prem and cloud service is supported.\n\n!!! note\n For TerminAttr version recommendation and EOS compatibility matrix, please refer to the latest TerminAttr Release Notes\n which always contain the latest recommended versions and minimum required versions per EOS release.\n", + "properties": { + "cvaddrs": { + "type": "array", + "description": "Streaming address(es) for CloudVision single cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", + "items": { + "type": "string", + "description": "Server address in the format `:`." + }, + "title": "Cvaddrs" + }, + "clusters": { + "type": "array", + "description": "Multiple CloudVision clusters.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Cluster Name.", + "title": "Name" + }, + "cvaddrs": { + "type": "array", + "description": "Streaming address(es) for CloudVision cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", + "items": { + "type": "string", + "description": "Server address in the format `:`." + }, + "title": "Cvaddrs" + }, + "cvauth": { + "type": "object", + "description": "Authentication scheme used to connect to CloudVision.\n", + "properties": { + "method": { + "type": "string", + "enum": [ + "token", + "token-secure", + "key", + "certs" + ], + "title": "Method" + }, + "key": { + "type": "string", + "title": "Key" + }, + "token_file": { + "type": "string", + "description": "Token file path.\ne.g. \"/tmp/token\"\n", + "title": "Token File" + }, + "cert_file": { + "type": "string", + "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", + "title": "Cert File" + }, + "ca_file": { + "type": "string", + "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", + "title": "Ca File" + }, + "key_file": { + "type": "string", + "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", + "title": "Key File" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cvauth" + }, + "cvobscurekeyfile": { + "type": "boolean", + "description": "Encrypt the private key used for authentication to CloudVision.\n", + "title": "Cvobscurekeyfile" + }, + "cvproxy": { + "type": "string", + "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", + "title": "Cvproxy" + }, + "cvsourceip": { + "type": "string", + "description": "Set source IP address in case of in-band management.\n", + "title": "Cvsourceip" + }, + "cvsourceintf": { + "type": "string", + "description": "Set source interface in case of in-band management. Available as of TerminAttr v1.23.0.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", + "title": "Cvsourceintf" + }, + "cvvrf": { + "type": "string", + "description": "The VRF to use to connect to CloudVision.\n", + "title": "Cvvrf" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Clusters" + }, + "cvauth": { + "type": "object", + "description": "Authentication scheme used to connect to CloudVision.\n", + "properties": { + "method": { + "type": "string", + "enum": [ + "token", + "token-secure", + "key", + "certs" + ], + "title": "Method" + }, + "key": { + "type": "string", + "title": "Key" + }, + "token_file": { + "type": "string", + "description": "Token file path.\ne.g. \"/tmp/token\"\n", + "title": "Token File" + }, + "cert_file": { + "type": "string", + "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", + "title": "Cert File" + }, + "ca_file": { + "type": "string", + "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", + "title": "Ca File" + }, + "key_file": { + "type": "string", + "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", + "title": "Key File" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cvauth" + }, + "cvobscurekeyfile": { + "type": "boolean", + "description": "Encrypt the private key used for authentication to CloudVision.\n", + "title": "Cvobscurekeyfile" + }, + "cvproxy": { + "type": "string", + "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", + "title": "Cvproxy" + }, + "cvsourceip": { + "type": "string", + "description": "Set source IP address in case of in-band management.\n", + "title": "Cvsourceip" + }, + "cvsourceintf": { + "type": "string", + "description": "Set source interface in case of in-band management.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", + "title": "Cvsourceintf" + }, + "cvvrf": { + "type": "string", + "description": "The VRF to use to connect to CloudVision.\n", + "title": "Cvvrf" + }, + "cvgnmi": { + "type": "boolean", + "description": "Stream states from EOS gNMI servers (Openconfig) to CloudVision. Available as of TerminAttr v1.13.1.\n", + "title": "Cvgnmi" + }, + "disable_aaa": { + "type": "boolean", + "description": "Disable AAA authorization and accounting.\nWhen setting this flag, all commands pushed from CloudVision are applied directly to the CLI without authorization.\n", + "title": "Disable AAA" + }, + "grpcaddr": { + "type": "string", + "description": "Set the gRPC server address, the default is 127.0.0.1:6042.\ne.g. \"MGMT/0.0.0.0:6042\"\n", + "title": "Grpcaddr" + }, + "grpcreadonly": { + "type": "boolean", + "description": "gNMI read-only mode - Disable gnmi.Set().\n", + "title": "Grpcreadonly" + }, + "ingestexclude": { + "type": "string", + "description": "Exclude paths from Sysdb on the ingest side.\ne.g. \"/Sysdb/cell/1/agent,/Sysdb/cell/2/agent\"\n", + "title": "Ingestexclude" + }, + "smashexcludes": { + "type": "string", + "description": "Exclude paths from the shared memory table.\ne.g. \"ale,flexCounter,hardware,kni,pulse,strata\"\n", + "title": "Smashexcludes" + }, + "taillogs": { + "type": "string", + "description": "Enable log file collection; /var/log/messages is streamed by default if no path is set.\ne.g. \"/var/log/messages\"\n", + "title": "Taillogs" + }, + "ecodhcpaddr": { + "type": "string", + "description": "ECO DHCP Collector address or ECO DHCP Fingerprint listening address in standalone mode (default \"127.0.0.1:67\").\n", + "title": "Ecodhcpaddr" + }, + "ipfix": { + "type": "boolean", + "description": "Enable IPFIX provider (TerminAttr default is true).\nThis flag is enabled by default and does not have to be added to the daemon configuration.\n", + "title": "Ipfix" + }, + "ipfixaddr": { + "type": "string", + "description": "ECO IPFIX Collector address to listen on to receive IPFIX packets (TerminAttr default \"127.0.0.1:4739\").\n", + "title": "Ipfixaddr" + }, + "sflow": { + "type": "boolean", + "description": "Enable sFlow provider (TerminAttr default is true).\n", + "title": "Sflow" + }, + "sflowaddr": { + "type": "string", + "description": "ECO sFlow Collector address to listen on to receive sFlow packets (TerminAttr default \"127.0.0.1:6343\").\n", + "title": "Sflowaddr" + }, + "cvconfig": { + "type": "boolean", + "description": "Subscribe to dynamic device configuration from CloudVision (TerminAttr default is false).\n", + "title": "Cvconfig" + }, + "cvcompression": { + "type": "string", + "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\n\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", + "deprecated": true, + "title": "Cvcompression" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Daemon TerminAttr" + }, + "daemons": { + "type": "array", + "title": "Custom Daemons", + "description": "This will add a daemon to the eos configuration that is most useful when trying to run OpenConfig clients like ocprometheus.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Daemon Name.", + "title": "Name" + }, + "exec": { + "type": "string", + "description": "command to run as a daemon.\n", + "title": "Exec" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "required": [ + "exec", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "dhcp_relay": { + "type": "object", + "properties": { + "servers": { + "type": "array", + "items": { + "type": "string", + "description": "Server IP or Hostname." + }, + "title": "Servers" + }, + "tunnel_requests_disabled": { + "type": "boolean", + "title": "Tunnel Requests Disabled" + }, + "mlag_peerlink_requests_disabled": { + "type": "boolean", + "title": "MLAG Peerlink Requests Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "DHCP Relay" + }, + "dhcp_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "vrf": { + "type": "string", + "description": "VRF in which to configure the DHCP server, use `default` to indicate default VRF.", + "title": "VRF" + }, + "lease_time_ipv4": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time IPv4" + }, + "lease_time_ipv6": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time IPv6" + }, + "dns_domain_name_ipv4": { + "type": "string", + "title": "DNS Domain Name IPv4" + }, + "dns_domain_name_ipv6": { + "type": "string", + "title": "DNS Domain Name IPv6" + }, + "dns_servers_ipv4": { + "type": "array", + "minItems": 1, + "description": "List of DNS servers for IPv4 clients.", + "items": { + "type": "string", + "description": "IPv4 address of DNS server." + }, + "title": "DNS Servers IPv4" + }, + "dns_servers_ipv6": { + "type": "array", + "minItems": 1, + "description": "List of DNS servers for IPv6 clients.", + "items": { + "type": "string", + "description": "IPv6 address of DNS server." + }, + "title": "DNS Servers IPv6" + }, + "tftp_server": { + "type": "object", + "properties": { + "file_ipv4": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "description": "Name of TFTP file for IPv4 clients.", + "title": "File IPv4" + }, + "file_ipv6": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "description": "Name of TFTP file for IPv6 clients.", + "title": "File IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tftp Server" + }, + "ipv4_vendor_options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vendor_id": { + "type": "string", + "title": "Vendor ID" + }, + "sub_options": { + "type": "array", + "items": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "title": "Code" + }, + "string": { + "type": "string", + "description": "String value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "title": "String" + }, + "ipv4_address": { + "type": "string", + "description": "IPv4 address value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "title": "IPv4 Address" + }, + "array_ipv4_address": { + "type": "array", + "description": "Array of IPv4 addresses for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", + "items": { + "type": "string" + }, + "title": "Array IPv4 Address" + } + }, + "required": [ + "code" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sub Options" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "vendor_id" + ] + }, + "title": "IPv4 Vendor Options" + }, + "subnets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "subnet": { + "description": "IPv4/IPv6 subnet.", + "type": "string", + "title": "Subnet" + }, + "name": { + "type": "string", + "title": "Name" + }, + "default_gateway": { + "type": "string", + "title": "Default Gateway" + }, + "dns_servers": { + "type": "array", + "items": { + "type": "string" + }, + "title": "DNS Servers" + }, + "ranges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "start": { + "type": "string", + "title": "Start" + }, + "end": { + "type": "string", + "title": "End" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Ranges" + }, + "lease_time": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "minimum": 0, + "maximum": 2000, + "title": "Days" + }, + "hours": { + "type": "integer", + "minimum": 0, + "maximum": 23, + "title": "Hours" + }, + "minutes": { + "type": "integer", + "minimum": 0, + "maximum": 59, + "title": "Minutes" + } + }, + "required": [ + "days", + "hours", + "minutes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Lease Time" + }, + "reservations": { + "description": "DHCP client reservations.", + "type": "array", + "items": { + "type": "object", + "properties": { + "mac_address": { + "type": "string", + "description": "Ethernet address in format - HHHH.HHHH.HHHH", + "title": "MAC Address" + }, + "hostname": { + "type": "string", + "title": "Hostname" + }, + "ipv4_address": { + "type": "string", + "description": "Valid IPv4 address from the given subnet.\nThis should only be used within an IPv4 subnet.", + "title": "IPv4 Address" + }, + "ipv6_address": { + "type": "string", + "description": "Valid IPv6 address from the given subnet.\nThis should only be used within an IPv6 subnet.", + "title": "IPv6 Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "mac_address" + ] + }, + "title": "Reservations" + } + }, + "required": [ + "subnet" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Subnets" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the dhcp server in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "vrf" + ] + }, + "title": "DHCP Servers" + }, + "dns_domain": { + "type": "string", + "description": "Domain Name.", + "title": "DNS Domain" + }, + "domain_list": { + "type": "array", + "description": "Search list of DNS domains.", + "items": { + "type": "string", + "description": "Domain name." + }, + "title": "Domain List" + }, + "dot1x": { + "type": "object", + "title": "Global 802.1x Authentication", + "properties": { + "system_auth_control": { + "type": "boolean", + "title": "System Auth Control" + }, + "protocol_lldp_bypass": { + "type": "boolean", + "title": "Protocol LLDP Bypass" + }, + "protocol_bpdu_bypass": { + "type": "boolean", + "title": "Protocol Bpdu Bypass" + }, + "dynamic_authorization": { + "type": "boolean", + "title": "Dynamic Authorization" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "delay": { + "type": "integer", + "minimum": 0, + "maximum": 300, + "title": "Delay" + }, + "hold_period": { + "type": "integer", + "minimum": 1, + "maximum": 300, + "title": "Hold Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "radius_av_pair": { + "type": "object", + "properties": { + "service_type": { + "type": "boolean", + "title": "Service Type" + }, + "framed_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 9236, + "title": "Framed MTU" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Radius Av Pair" + }, + "aaa": { + "type": "object", + "description": "Configure AAA parameters.", + "properties": { + "unresponsive": { + "type": "object", + "description": "Configure AAA timeout options.", + "properties": { + "eap_response": { + "type": "string", + "description": "EAP response to send.", + "enum": [ + "success", + "disabled" + ], + "title": "Eap Response" + }, + "action": { + "type": "object", + "description": "Set action for supplicant when AAA times out.", + "properties": { + "apply_cached_results": { + "type": "boolean", + "description": "Use results from a previous AAA response.", + "title": "Apply Cached Results" + }, + "cached_results_timeout": { + "type": "object", + "properties": { + "time_duration": { + "type": "integer", + "minimum": 1, + "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", + "title": "Time Duration" + }, + "time_duration_unit": { + "type": "string", + "enum": [ + "days", + "hours", + "minutes", + "seconds" + ], + "title": "Time Duration Unit" + } + }, + "required": [ + "time_duration_unit" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cached Results Timeout" + }, + "apply_alternate": { + "type": "boolean", + "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive action apply cached-results else traffic allow", + "title": "Apply Alternate" + }, + "traffic_allow": { + "type": "boolean", + "description": "Set action for supplicant traffic when AAA times out.", + "title": "Traffic Allow" + }, + "traffic_allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Traffic Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Action" + }, + "phone_action": { + "type": "object", + "description": "Set action for supplicant when AAA times out.", + "properties": { + "apply_cached_results": { + "type": "boolean", + "description": "Use results from a previous AAA response.", + "title": "Apply Cached Results" + }, + "cached_results_timeout": { + "type": "object", + "properties": { + "time_duration": { + "type": "integer", + "minimum": 1, + "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", + "title": "Time Duration" + }, + "time_duration_unit": { + "type": "string", + "enum": [ + "days", + "hours", + "minutes", + "seconds" + ], + "title": "Time Duration Unit" + } + }, + "required": [ + "time_duration_unit" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cached Results Timeout" + }, + "apply_alternate": { + "type": "boolean", + "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive phone action apply cached-results else traffic allow", + "title": "Apply Alternate" + }, + "traffic_allow": { + "description": "Set action for supplicant traffic when AAA times out.", + "type": "boolean", + "title": "Traffic Allow" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone Action" + }, + "recovery_action_reauthenticate": { + "type": "boolean", + "title": "Recovery Action Reauthenticate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unresponsive" + }, + "accounting_update_interval": { + "type": "integer", + "minimum": 5, + "maximum": 65535, + "description": "Interval period in seconds.", + "title": "Accounting Update Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "AAA" + }, + "captive_portal": { + "type": "object", + "description": "Web authentication feature authenticates a supplicant through a web page, referred to as a captive portal.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "url": { + "type": "string", + "description": "Supported URL type:\n - http: http://[:]\n - https: https://[:]", + "title": "URL" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + }, + "start_limit_infinite": { + "type": "boolean", + "description": "Set captive-portal start limit to infinte.", + "title": "Start Limit Infinite" + }, + "access_list_ipv4": { + "type": "string", + "description": "Standard access-list name.", + "title": "Access List IPv4" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Captive Portal" + }, + "supplicant": { + "type": "object", + "properties": { + "profiles": { + "description": "Dot1x supplicant profiles.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "eap_method": { + "type": "string", + "description": "Extensible Authentication Protocol method:\n - EAP Flexible Authentication via Secure Tunneling.\n - EAP with Transport Layer Security.", + "enum": [ + "fast", + "tls" + ], + "title": "Eap Method" + }, + "identity": { + "type": "string", + "description": "User identity.", + "title": "Identity" + }, + "passphrase_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Passphrase Type" + }, + "passphrase": { + "type": "string", + "description": "Extensible Authentication Protocol password.", + "title": "Passphrase" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "logging": { + "type": "boolean", + "description": "Enable supplicant logging.", + "title": "Logging" + }, + "disconnect_cached_results_timeout": { + "type": "integer", + "minimum": 60, + "maximum": 65535, + "description": "Timeout in seconds for removing a disconnected supplicant.", + "title": "Disconnect Cached Results Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Supplicant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "dps_interfaces": { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "\"Dps1\" is currently the only supported interface.", + "enum": [ + "Dps1" + ], + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "mtu": { + "type": "integer", + "description": "Maximum Transmission Unit in bytes.", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name,", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment Size for IPv4.", + "minimum": 64, + "maximum": 65495, + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment Size for IPv6.", + "minimum": 64, + "maximum": 65475, + "title": "IPv6" + }, + "direction": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Dps interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "DPS Interfaces" + }, + "dynamic_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Dynamic prefix-list name.", + "title": "Name" + }, + "match_map": { + "type": "string", + "description": "Route-map name.", + "title": "Match Map" + }, + "prefix_list": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "description": "Prefix-list name.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Prefix-list name.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic Prefix Lists" + }, + "enable_password": { + "type": "object", + "properties": { + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.\n", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Enable Password" + }, + "eos_cli": { + "type": "string", + "description": "Multiline string with EOS CLI rendered directly on the root level of the final EOS configuration.", + "title": "EOS CLI" + }, + "eos_cli_config_gen_configuration": { + "type": "object", + "properties": { + "hide_passwords": { + "type": "boolean", + "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the configuration if true.\n", + "default": false, + "title": "Hide Passwords" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EOS CLI Config Gen Configuration" + }, + "eos_cli_config_gen_documentation": { + "type": "object", + "properties": { + "hide_passwords": { + "type": "boolean", + "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the documentation if true.\n", + "default": true, + "title": "Hide Passwords" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EOS CLI Config Gen Documentation" + }, + "errdisable": { + "type": "object", + "properties": { + "detect": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "acl", + "arp-inspection", + "dot1x", + "link-change", + "tapagg", + "xcvr-misconfigured", + "xcvr-overheat", + "xcvr-power-unsupported" + ] + }, + "title": "Causes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Detect" + }, + "recovery": { + "type": "object", + "properties": { + "causes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "arp-inspection", + "bpduguard", + "dot1x", + "hitless-reload-down", + "lacp-rate-limit", + "link-flap", + "no-internal-vlan", + "portchannelguard", + "portsec", + "speed-misconfigured", + "tap-port-init", + "tapagg", + "uplink-failure-detection", + "xcvr-misconfigured", + "xcvr-overheat", + "xcvr-power-unsupported", + "xcvr-unsupported" + ] + }, + "title": "Causes" + }, + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "default": 300, + "minimum": 30, + "maximum": 86400, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Recovery" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Errdisable" + }, + "ethernet_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "load_interval": { + "type": "integer", + "minimum": 0, + "maximum": 600, + "description": "Interval in seconds for updating interface counters.", + "title": "Load Interval" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "native_vlan": { + "type": "integer", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "tagged phone", + "untagged", + "untagged phone" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q", + "port-channel-member" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "address_locking": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Enable address locking for IPv4.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Enable address locking for IPv6.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "desired", + "on", + "off" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "error_correction_encoding": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "fire_code": { + "type": "boolean", + "title": "Fire Code" + }, + "reed_solomon": { + "type": "boolean", + "title": "Reed Solomon" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Error Correction Encoding" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulations are all optional and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask or \"dhcp\".", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IP Address Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "dhcp_client_accept_default_route": { + "type": "boolean", + "description": "Install default-route obtained via DHCP.", + "title": "DHCP Client Accept Default Route" + }, + "dhcp_server_ipv4": { + "type": "boolean", + "description": "Enable IPv4 DHCP server.", + "title": "DHCP Server IPv4" + }, + "dhcp_server_ipv6": { + "type": "boolean", + "description": "Enable IPv6 DHCP server.", + "title": "DHCP Server IPv6" + }, + "ip_helpers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_nat": { + "type": "object", + "properties": { + "service_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Service Profile" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "multicast": { + "type": "object", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "mac_security": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Security" + }, + "tcp_mss_ceiling": { + "type": "object", + "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", + "properties": { + "ipv4_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv4 Segment Size" + }, + "ipv6_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv6 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "channel_group": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "mode": { + "type": "string", + "enum": [ + "on", + "active", + "passive" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Channel Group" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "poe": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "profile": { + "type": "string", + "description": "Interface profile.", + "title": "Profile" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "congestion_drops": { + "type": "boolean", + "title": "Congestion Drops" + }, + "spanning_tree": { + "type": "boolean", + "title": "Spanning Tree" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "dot1x": { + "type": "object", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Value can be 60-4294967295 or 'server'.", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + }, + "eapol": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "authentication_failure_fallback_mba": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure Fallback Mba" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Eapol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "priority_flow_control": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "priorities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "title": "No Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "priority" + ] + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "lacp_timer": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "fast", + "normal" + ], + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 3000, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "lacp_port_priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "LACP Port Priority" + }, + "transceiver": { + "type": "object", + "properties": { + "frequency": { + "type": "string", + "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", + "title": "Frequency" + }, + "frequency_unit": { + "type": "string", + "enum": [ + "ghz" + ], + "description": "Unit of Transceiver Laser Frequency.", + "title": "Frequency Unit" + }, + "media": { + "type": "object", + "properties": { + "override": { + "type": "string", + "description": "Transceiver type.", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Media" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transceiver" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "sync_e": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "priority": { + "type": "string", + "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "port_profile": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Port Profile" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Uc TX Queues" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "max", + "max_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "TX Queues" + }, + "vrrp_ids": { + "type": "array", + "description": "VRRP model.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "switchport": { + "type": "object", + "properties": { + "port_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "mac_address_maximum": { + "type": "object", + "description": "Maximum number of MAC addresses allowed on the interface.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable port level check for port security (only in violation 'shutdown' mode).", + "title": "Disabled" + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "MAC address limit.", + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Maximum" + }, + "violation": { + "type": "object", + "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "shutdown", + "protect" + ], + "description": "Configure port security mode.", + "title": "Mode" + }, + "protect_log": { + "type": "boolean", + "description": "Log new addresses seen after limit is reached in protect mode.", + "title": "Protect Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Violation" + }, + "vlan_default_mac_address_maximum": { + "type": "integer", + "minimum": 0, + "maximum": 1000, + "description": "Default maximum MAC addresses for all VLANs on this interface.", + "title": "VLAN Default MAC Address Maximum" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", + "title": "Range" + }, + "mac_address_maximum": { + "type": "integer", + "title": "MAC Address Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "range" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Security" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ethernet Interfaces" + }, + "event_handlers": { + "type": "array", + "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Event Handler Name.", + "title": "Name" + }, + "action_type": { + "type": "string", + "enum": [ + "bash", + "increment", + "log" + ], + "title": "Action Type" + }, + "action": { + "type": "string", + "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", + "deprecated": true, + "title": "Action" + }, + "actions": { + "type": "object", + "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", + "properties": { + "bash_command": { + "type": "string", + "description": "Define BASH command action. Command could be multiline also.", + "title": "Bash Command" + }, + "log": { + "type": "boolean", + "description": "Log a message when the event is triggered.", + "title": "Log" + }, + "increment_device_health_metric": { + "type": "string", + "description": "Name of device-health metric.", + "title": "Increment Device Health Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Actions" + }, + "delay": { + "type": "integer", + "description": "Event-handler delay in seconds.\n", + "title": "Delay" + }, + "trigger": { + "type": "string", + "description": "Configure event trigger condition.\n", + "enum": [ + "on-boot", + "on-counters", + "on-intf", + "on-logging", + "on-maintenance", + "on-startup-config", + "vm-tracer vm" + ], + "title": "Trigger" + }, + "trigger_on_counters": { + "type": "object", + "properties": { + "condition": { + "type": "string", + "description": "Set the logical expression to evaluate.", + "title": "Condition" + }, + "granularity_per_source": { + "type": "boolean", + "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", + "title": "Granularity Per Source" + }, + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Counters" + }, + "trigger_on_logging": { + "type": "object", + "properties": { + "poll_interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "description": "Set the polling interval in seconds.", + "title": "Poll Interval" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages.", + "title": "Regex" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Logging" + }, + "trigger_on_intf": { + "type": "object", + "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", + "properties": { + "interface": { + "type": "string", + "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", + "title": "Interface" + }, + "ip": { + "type": "boolean", + "description": "Action is triggered upon changes to interface IP address assignment.", + "title": "IP" + }, + "ipv6": { + "type": "boolean", + "description": "Action is triggered upon changes to interface ipv6 address assignment.", + "title": "IPv6" + }, + "operstatus": { + "type": "boolean", + "description": "Action is triggered upon changes to interface operStatus.", + "title": "Operstatus" + } + }, + "required": [ + "interface" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Intf" + }, + "trigger_on_maintenance": { + "description": "Settings required for trigger 'on-maintenance'.", + "type": "object", + "properties": { + "operation": { + "type": "string", + "enum": [ + "enter", + "exit" + ], + "title": "Operation" + }, + "bgp_peer": { + "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", + "type": "string", + "title": "BGP Peer" + }, + "action": { + "type": "string", + "description": "Action for maintenance operation.", + "enum": [ + "after", + "before", + "all", + "begin", + "end" + ], + "title": "Action" + }, + "stage": { + "type": "string", + "description": "Action is triggered after/before specified stage.", + "enum": [ + "bgp", + "linkdown", + "mlag", + "ratemon" + ], + "title": "Stage" + }, + "vrf": { + "type": "string", + "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", + "title": "VRF" + }, + "interface": { + "type": "string", + "description": "Trigger condition occurs on maintenance operation of specified interface.", + "title": "Interface" + }, + "unit": { + "type": "string", + "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", + "title": "Unit" + } + }, + "required": [ + "operation", + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trigger On Maintenance" + }, + "regex": { + "type": "string", + "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", + "deprecated": true, + "title": "Regex" + }, + "asynchronous": { + "type": "boolean", + "default": false, + "description": "Set the action to be non-blocking.\n", + "title": "Asynchronous" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Event Handlers" + }, + "event_monitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event Monitor" + }, + "flow_tracking": { + "type": "object", + "properties": { + "sampled": { + "type": "object", + "properties": { + "encapsulation": { + "type": "object", + "properties": { + "ipv4_ipv6": { + "type": "boolean", + "title": "IPv4 IPv6" + }, + "mpls": { + "type": "boolean", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "sample": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Sample" + }, + "hardware_offload": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Configure hardware offload for IPv4 traffic.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Configure hardware offload for IPv6 traffic.", + "title": "IPv6" + }, + "threshold_minimum": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "description": "Minimum number of samples.", + "title": "Threshold Minimum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Offload" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "table_size": { + "type": "integer", + "minimum": 1, + "maximum": 614400, + "description": "Maximum number of entries in flow table.\n", + "title": "Table Size" + }, + "record_export": { + "type": "object", + "properties": { + "mpls": { + "type": "boolean", + "description": "Export MPLS forwarding information.", + "title": "MPLS" + }, + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sampled" + }, + "hardware": { + "type": "object", + "properties": { + "record": { + "type": "object", + "properties": { + "format_ipfix_standard_timestamps_counters": { + "type": "boolean", + "description": "Enable software export of IPFIX data records.", + "title": "Format Ipfix Standard Timestamps Counters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "record_export": { + "type": "object", + "properties": { + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "flow_trackings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "sampled" + ], + "description": "Flow Tracking Type - only 'sampled' supported for now.", + "title": "Type" + }, + "sample": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "title": "Sample" + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracker Name.", + "title": "Name" + }, + "record_export": { + "type": "object", + "properties": { + "on_inactive_timeout": { + "type": "integer", + "minimum": 3000, + "maximum": 900000, + "description": "Flow record inactive export timeout in milliseconds.", + "title": "On Inactive Timeout" + }, + "on_interval": { + "type": "integer", + "minimum": 1000, + "maximum": 36000000, + "description": "Flow record export interval in milliseconds.", + "title": "On Interval" + }, + "mpls": { + "type": "boolean", + "description": "Export MPLS forwarding information.", + "title": "MPLS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Record Export" + }, + "exporters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Exporter Name.", + "title": "Name" + }, + "collector": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", + "title": "Host" + }, + "port": { + "type": "integer", + "description": "Collector Port Number.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collector" + }, + "format": { + "type": "object", + "properties": { + "ipfix_version": { + "type": "integer", + "title": "Ipfix Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "local_interface": { + "type": "string", + "description": "Local Source Interface.", + "title": "Local Interface" + }, + "template_interval": { + "type": "integer", + "minimum": 5000, + "maximum": 3600000, + "description": "Template interval in milliseconds.", + "title": "Template Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exporters" + }, + "table_size": { + "type": "integer", + "minimum": 1, + "maximum": 614400, + "description": "Maximum number of entries in flow table.\n", + "title": "Table Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Trackers" + }, + "shutdown": { + "type": "boolean", + "default": false, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "type" + ] + }, + "title": "Flow Trackings" + }, + "generate_default_config": { + "type": "boolean", + "default": true, + "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter\n", + "title": "Generate Default Config" + }, + "generate_device_documentation": { + "type": "boolean", + "default": true, + "title": "Generate Device Documentation" + }, + "hardware": { + "type": "object", + "properties": { + "access_list": { + "type": "object", + "properties": { + "mechanism": { + "type": "string", + "enum": [ + "algomatch", + "none", + "tcam" + ], + "title": "Mechanism" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List" + }, + "speed_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "speed_group": { + "type": "string", + "title": "Speed Group" + }, + "serdes": { + "type": "string", + "description": "Serdes speed like \"10g\" or \"25g\".", + "title": "Serdes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "speed_group" + ] + }, + "title": "Speed Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware" + }, + "hardware_counters": { + "type": "object", + "properties": { + "features": { + "type": "array", + "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "acl", + "decap-group", + "directflow", + "ecn", + "flow-spec", + "gre tunnel interface", + "ip", + "mpls interface", + "mpls lfib", + "mpls tunnel", + "multicast", + "nexthop", + "pbr", + "pdp", + "policing interface", + "qos", + "qos dual-rate-policer", + "route", + "routed-port", + "segment-security", + "subinterface", + "tapagg", + "traffic-class", + "traffic-policy", + "vlan", + "vlan-interface", + "vni decap", + "vni encap", + "vtep decap", + "vtep encap" + ], + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "cpu" + ], + "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", + "title": "Direction" + }, + "address_type": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "mac" + ], + "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", + "title": "Address Type" + }, + "layer3": { + "type": "boolean", + "description": "Supported only for the 'ip' feature.\n", + "title": "Layer3" + }, + "vrf": { + "type": "string", + "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "VRF" + }, + "prefix": { + "type": "string", + "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", + "title": "Prefix" + }, + "units_packets": { + "type": "boolean", + "title": "Units Packets" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Features" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Counters" + }, + "hostname": { + "type": "string", + "title": "Hostname" + }, + "interface_defaults": { + "type": "object", + "properties": { + "ethernet": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet" + }, + "mtu": { + "type": "integer", + "title": "MTU" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface Defaults" + }, + "interface_groups": { + "type": "array", + "title": "Maintenance Interface Groups", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface-Group name.", + "title": "Name" + }, + "interfaces": { + "type": "array", + "items": { + "type": "string", + "description": "Interface Name." + }, + "title": "Interfaces" + }, + "bgp_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Name of BGP Maintenance Profile." + }, + "title": "BGP Maintenance Profiles" + }, + "interface_maintenance_profiles": { + "type": "array", + "items": { + "type": "string", + "description": "Name of Interface Maintenance Profile." + }, + "title": "Interface Maintenance Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + } + }, + "interface_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface-Profile Name.", + "title": "Name" + }, + "commands": { + "type": "array", + "items": { + "type": "string", + "description": "EOS CLI interface command.\nExample: \"switchport mode access\"\n" + }, + "title": "Commands" + } + }, + "required": [ + "commands", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Profiles" + }, + "ip_access_lists": { + "type": "array", + "title": "IP Extended Access-Lists (improved model)", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "entries": { + "type": "array", + "description": "ACL Entries.", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "ACL entry sequence number.", + "title": "Sequence" + }, + "remark": { + "type": "string", + "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", + "title": "Remark" + }, + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "description": "ACL action.\nRequired except for remarks.", + "title": "Action" + }, + "protocol": { + "type": "string", + "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", + "title": "Protocol" + }, + "source": { + "type": "string", + "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Source" + }, + "source_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Source Ports Match" + }, + "source_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP source port name or number." + }, + "title": "Source Ports" + }, + "destination": { + "type": "string", + "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", + "title": "Destination" + }, + "destination_ports_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq", + "range" + ], + "default": "eq", + "title": "Destination Ports Match" + }, + "destination_ports": { + "type": "array", + "items": { + "type": "string", + "description": "TCP/UDP destination port name or number." + }, + "title": "Destination Ports" + }, + "tcp_flags": { + "type": "array", + "items": { + "type": "string", + "description": "TCP Flag Name." + }, + "title": "TCP Flags" + }, + "fragments": { + "type": "boolean", + "description": "Match non-head fragment packets.", + "title": "Fragments" + }, + "log": { + "type": "boolean", + "description": "Log matches against this rule.", + "title": "Log" + }, + "ttl": { + "type": "integer", + "description": "TTL value.", + "minimum": 0, + "maximum": 255, + "title": "TTL" + }, + "ttl_match": { + "type": "string", + "enum": [ + "eq", + "gt", + "lt", + "neq" + ], + "default": "eq", + "title": "TTL Match" + }, + "icmp_type": { + "type": "string", + "description": "Message type name/number for ICMP packets.", + "title": "ICMP Type" + }, + "icmp_code": { + "type": "string", + "description": "Message code for ICMP packets.", + "title": "ICMP Code" + }, + "nexthop_group": { + "type": "string", + "description": "nexthop-group name.", + "title": "Nexthop Group" + }, + "tracked": { + "type": "boolean", + "description": "Match packets in existing ICMP/UDP/TCP connections.", + "title": "Tracked" + }, + "dscp": { + "type": "string", + "description": "DSCP value or name.", + "title": "DSCP" + }, + "vlan_number": { + "type": "integer", + "title": "VLAN Number" + }, + "vlan_inner": { + "type": "boolean", + "default": false, + "title": "VLAN Inner" + }, + "vlan_mask": { + "type": "string", + "description": "0x000-0xFFF VLAN mask.", + "title": "VLAN Mask" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + } + }, + "ip_access_lists_max_entries": { + "type": "integer", + "description": "Limit ACL entries defined under the `ip_access_lists`.", + "title": "IP Access Lists Max Entries" + }, + "ip_community_lists": { + "type": "array", + "title": "IP Community Lists", + "description": "Communities and regexp entries MUST not be configured in the same community-list.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IP Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Action" + }, + "communities": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If defined, a standard community-list will be configured.\nSupported community strings (case insensitive):\n- GSHUT\n- internet\n- local-as\n- no-advertise\n- no-export\n- <1-4294967040>\n- aa:nn\n", + "title": "Communities" + }, + "regexp": { + "type": "string", + "description": "Regular Expression.\nIf defined, a regex community-list will be configured.\n", + "title": "RegExp" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_dhcp_relay": { + "type": "object", + "properties": { + "always_on": { + "type": "boolean", + "description": "DhcpRelay Agent will be in always-on mode.", + "title": "Always On" + }, + "all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "All Subnets" + }, + "information_option": { + "type": "boolean", + "description": "Insert Option-82 information.", + "title": "Information Option" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP DHCP Relay" + }, + "ip_dhcp_snooping": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "bridging": { + "type": "boolean", + "title": "Bridging" + }, + "information_option": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable insertion of option-82 in DHCP request packets.", + "title": "Enabled" + }, + "circuit_id_type": { + "type": "string", + "description": "\"none\" or <0 - 255>.", + "title": "Circuit ID Type" + }, + "circuit_id_format": { + "type": "string", + "description": "Required if `circuit_id_type` is set.\n- \"%h:%p\" Hostname and interface name\n- \"%p:%v\" Interface name and VLAN ID", + "enum": [ + "%h:%p", + "%p:%v" + ], + "title": "Circuit ID Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Information Option" + }, + "vlan": { + "type": "string", + "description": "VLAN range as string.\n\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18", + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP DHCP Snooping" + }, + "ip_domain_lookup": { + "type": "object", + "properties": { + "source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Source Interface.\n", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Source Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Domain Lookup" + }, + "ip_extcommunity_lists": { + "type": "array", + "title": "IP Extended Community Lists", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "extcommunities": { + "type": "string", + "description": "Communities as string.\nExample: \"65000:65000\"\n", + "title": "Extcommunities" + } + }, + "required": [ + "type", + "extcommunities" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_extcommunity_lists_regexp": { + "type": "array", + "title": "IP Extended Community Lists RegExp", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community-list Name.", + "title": "Name" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "regexp": { + "type": "string", + "description": "Regular Expression.", + "title": "RegExp" + } + }, + "required": [ + "type", + "regexp" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "required": [ + "entries", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_ftp_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Ftp Client Source Interfaces" + }, + "ip_hardware": { + "type": "object", + "properties": { + "fib": { + "type": "object", + "properties": { + "optimize": { + "type": "object", + "properties": { + "prefixes": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "enum": [ + "internet", + "urpf-internet" + ], + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Optimize" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fib" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Hardware" + }, + "ip_http_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Interface Name.", + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP HTTP Client Source Interfaces" + }, + "ip_icmp_redirect": { + "type": "boolean", + "title": "IP ICMP Redirect" + }, + "ip_igmp_snooping": { + "type": "object", + "properties": { + "globally_enabled": { + "type": "boolean", + "default": true, + "description": "Activate or deactivate IGMP snooping for all vlans where `vlans` allows user to activate / deactivate IGMP snooping per vlan.", + "title": "Globally Enabled" + }, + "robustness_variable": { + "type": "integer", + "title": "Robustness Variable" + }, + "restart_query_interval": { + "type": "integer", + "title": "Restart Query Interval" + }, + "interface_restart_query": { + "type": "integer", + "title": "Interface Restart Query" + }, + "fast_leave": { + "type": "boolean", + "title": "Fast Leave" + }, + "querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "address": { + "type": "string", + "description": "IP Address.", + "title": "Address" + }, + "query_interval": { + "type": "integer", + "title": "Query Interval" + }, + "max_response_time": { + "type": "integer", + "title": "Max Response Time" + }, + "last_member_query_interval": { + "type": "integer", + "title": "Last Member Query Interval" + }, + "last_member_query_count": { + "type": "integer", + "title": "Last Member Query Count" + }, + "startup_query_interval": { + "type": "integer", + "title": "Startup Query Interval" + }, + "startup_query_count": { + "type": "integer", + "title": "Startup Query Count" + }, + "version": { + "type": "integer", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Querier" + }, + "proxy": { + "type": "boolean", + "title": "Proxy" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "address": { + "type": "string", + "description": "IP Address.", + "title": "Address" + }, + "query_interval": { + "type": "integer", + "title": "Query Interval" + }, + "max_response_time": { + "type": "integer", + "title": "Max Response Time" + }, + "last_member_query_interval": { + "type": "integer", + "title": "Last Member Query Interval" + }, + "last_member_query_count": { + "type": "integer", + "title": "Last Member Query Count" + }, + "startup_query_interval": { + "type": "integer", + "title": "Startup Query Interval" + }, + "startup_query_count": { + "type": "integer", + "title": "Startup Query Count" + }, + "version": { + "type": "integer", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Querier" + }, + "max_groups": { + "type": "integer", + "title": "Max Groups" + }, + "fast_leave": { + "type": "boolean", + "title": "Fast Leave" + }, + "proxy": { + "type": "boolean", + "description": "Global proxy settings should be enabled before enabling per-vlan.\n", + "title": "Proxy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Snooping" + }, + "ip_name_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "description": "IPv4 or IPv6 address for DNS server.", + "title": "IP Address" + }, + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + }, + "priority": { + "description": "Priority value (lower is first).", + "type": "integer", + "minimum": 0, + "maximum": 4, + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Name Servers" + }, + "ip_nat": { + "type": "object", + "properties": { + "kernel_buffer_size": { + "type": "integer", + "minimum": 1, + "maximum": 64, + "description": "Buffer size in MB.", + "title": "Kernel Buffer Size" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "Specify VRF for NAT profile.", + "title": "VRF" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "pools": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "ip-port", + "port-only" + ], + "default": "ip-port", + "title": "Type" + }, + "prefix_length": { + "type": "integer", + "minimum": 16, + "maximum": 32, + "description": "It is only used and required when `type` is `ip-port`.", + "title": "Prefix Length" + }, + "ranges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "first_ip": { + "type": "string", + "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.", + "title": "First IP" + }, + "last_ip": { + "type": "string", + "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.\n`first_ip` and `last_ip` ip addresses should lie in same subnet.", + "title": "Last IP" + }, + "first_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "First Port" + }, + "last_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Required when `first_port` is set.\n`last_port` must be greater than or equal to `first_port`.", + "title": "Last Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Ranges" + }, + "utilization_log_threshold": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "title": "Utilization Log Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Pools" + }, + "synchronization": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "Description" + }, + "expiry_interval": { + "type": "integer", + "minimum": 60, + "maximum": 3600, + "description": "In seconds.", + "title": "Expiry Interval" + }, + "local_interface": { + "type": "string", + "description": "EOS interface name.", + "title": "Local Interface" + }, + "peer_address": { + "type": "string", + "description": "IPv4 address.", + "title": "Peer Address" + }, + "port_range": { + "type": "object", + "properties": { + "first_port": { + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "title": "First Port" + }, + "last_port": { + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "description": ">= first_port.", + "title": "Last Port" + }, + "split_disabled": { + "type": "boolean", + "title": "Split Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Range" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Synchronization" + }, + "translation": { + "type": "object", + "properties": { + "address_selection": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "hash_field_source_ip": { + "type": "boolean", + "title": "Hash Field Source IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Selection" + }, + "counters": { + "type": "boolean", + "title": "Counters" + }, + "low_mark": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "minimum": 1, + "maximum": 99, + "description": "Used to render 'ip nat translation low-mark '.", + "title": "Percentage" + }, + "host_percentage": { + "type": "integer", + "minimum": 1, + "maximum": 99, + "description": "Used to render 'ip nat translation low-mark host'.", + "title": "Host Percentage" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Low Mark" + }, + "max_entries": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Limit" + }, + "host_limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Host Limit" + }, + "ip_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "IPv4 address.", + "title": "IP" + }, + "limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Limit" + } + }, + "required": [ + "limit", + "ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Limits" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Max Entries" + }, + "timeouts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "title": "Protocol" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "In seconds.", + "title": "Timeout" + } + }, + "required": [ + "timeout", + "protocol" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Timeouts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Translation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ip_radius_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Radius Source Interfaces" + }, + "ip_routing": { + "type": "boolean", + "title": "IP Routing" + }, + "ip_routing_ipv6_interfaces": { + "type": "boolean", + "title": "IP Routing IPv6 Interfaces" + }, + "ip_security": { + "type": "object", + "properties": { + "ike_policies": { + "type": "array", + "description": "Internet Security Association and Key Mgmt Protocol.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "local_id": { + "type": "string", + "description": "Local IKE identification.\nCan be an IPv4 or an IPv6 address.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", + "title": "Local ID" + }, + "local_id_fqdn": { + "type": "string", + "description": "Local FQDN or UFQDN IKE identification.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", + "title": "Local ID Fqdn" + }, + "ike_lifetime": { + "type": "integer", + "minimum": 1, + "maximum": 24, + "description": "IKE lifetime in hours.", + "title": "Ike Lifetime" + }, + "encryption": { + "type": "string", + "enum": [ + "3des", + "aes128", + "aes256" + ], + "description": "IKE encryption algorithm.", + "title": "Encryption" + }, + "dh_group": { + "type": "integer", + "enum": [ + 1, + 2, + 5, + 14, + 15, + 16, + 17, + 20, + 21, + 24 + ], + "description": "Diffie-Hellman group for the key exchange.", + "title": "Dh Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ike Policies" + }, + "sa_policies": { + "type": "array", + "description": "Security Association policies.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the SA policy. The \"null\" value is deprecated and will be removed in AVD 5.0.0.", + "title": "Name" + }, + "sa_lifetime": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Lifetime value for this SA.\nValid range depends on the unit.\n<1-24> Lifetime in hours ( default )\n<1-4000000> Packet limit in thousands\n<1-6000> Byte limit in GB ( 1024 MB )\n<1-6144000> Byte limit in MB ( 1024 KB )", + "title": "Value" + }, + "unit": { + "type": "string", + "enum": [ + "gigabytes", + "hours", + "megabytes", + "thousand-packets" + ], + "default": "hours", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Lifetime" + }, + "esp": { + "type": "object", + "properties": { + "integrity": { + "type": "string", + "enum": [ + "disabled", + "sha1", + "sha256", + "null" + ], + "title": "Integrity" + }, + "encryption": { + "type": "string", + "enum": [ + "disabled", + "aes128", + "aes128gcm128", + "aes128gcm64", + "aes256", + "aes256gcm128", + "null" + ], + "title": "Encryption" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Esp" + }, + "pfs_dh_group": { + "type": "integer", + "enum": [ + 1, + 2, + 5, + 14, + 15, + 16, + 17, + 20, + 21, + 24 + ], + "title": "Pfs Dh Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Sa Policies" + }, + "profiles": { + "type": "array", + "description": "IPSec profiles.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the IPsec profile.", + "title": "Name" + }, + "ike_policy": { + "type": "string", + "description": "Name of the IKE policy to use in this profile.", + "title": "Ike Policy" + }, + "sa_policy": { + "type": "string", + "description": "Name of the Security Association to use in this profile.", + "title": "Sa Policy" + }, + "connection": { + "type": "string", + "description": "IPsec connection (Initiator/Responder/Dynamic).", + "enum": [ + "add", + "start", + "route" + ], + "title": "Connection" + }, + "shared_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Shared Key" + }, + "dpd": { + "type": "object", + "description": "Dead Peer Detection.", + "properties": { + "interval": { + "type": "integer", + "description": "Interval (in seconds) between keep-alive messages.", + "minimum": 2, + "maximum": 3600, + "title": "Interval" + }, + "time": { + "type": "integer", + "description": "Time (in seconds) after which the action is applied.", + "minimum": 10, + "maximum": 3600, + "title": "Time" + }, + "action": { + "type": "string", + "description": "Action to apply.\n\n* 'clear': Delete all connections\n* 'hold': Re-negotiate connection on demand\n* 'restart': Restart connection immediately\n", + "enum": [ + "clear", + "hold", + "restart" + ], + "title": "Action" + } + }, + "required": [ + "interval", + "time", + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dpd" + }, + "mode": { + "type": "string", + "description": "Ipsec mode type.", + "enum": [ + "transport", + "tunnel" + ], + "title": "Mode" + }, + "flow_parallelization_encapsulation_udp": { + "type": "boolean", + "description": "Enable flow parallelization.\nWhen enabled, multiple cores are used to parallelize the IPsec encryption and decryption processing.", + "title": "Flow Parallelization Encapsulation UDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "key_controller": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "IPsec profile name to use.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Key Controller" + }, + "hardware_encryption_disabled": { + "type": "boolean", + "default": false, + "description": "Disable hardware encryption.\nAn SFE restart is needed for this change to take effect.", + "title": "Hardware Encryption Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Security" + }, + "ip_ssh_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Interface Name.", + "type": "string", + "title": "Name" + }, + "vrf": { + "type": "string", + "default": "default", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP SSH Client Source Interfaces" + }, + "ip_tacacs_source_interfaces": { + "type": "array", + "title": "IP Tacacs Source Interfaces", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ip_telnet_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Telnet Client Source Interfaces" + }, + "ip_tftp_client_source_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IP Tftp Client Source Interfaces" + }, + "ip_virtual_router_mac_address": { + "type": "string", + "description": "MAC address (hh:hh:hh:hh:hh:hh).", + "title": "IP Virtual Router MAC Address" + }, + "ipv6_access_lists": { + "type": "array", + "title": "IPv6 Extended Access-Lists", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + } + }, + "ipv6_dhcp_relay": { + "type": "object", + "properties": { + "always_on": { + "type": "boolean", + "description": "DhcpRelay Agent will be in always-on mode, off by default.", + "title": "Always On" + }, + "all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "All Subnets" + }, + "option": { + "type": "object", + "description": "Insert DHCP Option.", + "properties": { + "link_layer_address": { + "type": "boolean", + "description": "Add Option 79 (Link Layer Address Option).", + "title": "Link Layer Address" + }, + "remote_id_format": { + "type": "string", + "enum": [ + "%m:%i", + "%m:%p" + ], + "description": "Add RemoteID option 37 in format MAC address and interface ID (`%m:%i`) or MAC address and interface name (`%m:%p`).", + "title": "Remote ID Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Option" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 DHCP Relay" + }, + "ipv6_hardware": { + "type": "object", + "properties": { + "fib": { + "type": "object", + "properties": { + "optimize": { + "type": "object", + "properties": { + "prefixes": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Pre-defined profile 'internet' or user-defined profile name.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Optimize" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fib" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Hardware" + }, + "ipv6_icmp_redirect": { + "type": "boolean", + "title": "IPv6 ICMP Redirect" + }, + "ipv6_neighbor": { + "type": "object", + "properties": { + "static_entries": { + "type": "array", + "description": "Static IPv6 neighbor entries.", + "items": { + "type": "object", + "properties": { + "ipv6_address": { + "type": "string", + "description": "IPv6 address of neighbor.", + "title": "IPv6 Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "interface": { + "type": "string", + "description": "Interface name.", + "title": "Interface" + }, + "mac_address": { + "type": "string", + "description": "MAC address of neighbor like 'aa:af:12:34:bc:bf'", + "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", + "title": "MAC Address" + } + }, + "required": [ + "ipv6_address", + "interface", + "mac_address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Entries" + }, + "persistent": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Restore the IPv6 neighbor cache after reboot.", + "title": "Enabled" + }, + "refresh_delay": { + "type": "integer", + "description": "Time to wait in seconds before refreshing the IPv6 neighbor cache after reboot (EOS default 600).\nIt will require setting the `enabled` key to true.\n", + "minimum": 600, + "maximum": 3600, + "title": "Refresh Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Persistent" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Neighbor" + }, + "ipv6_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Prefix Lists" + }, + "ipv6_standard_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Standard Access Lists" + }, + "ipv6_static_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "title": "VRF" + }, + "destination_address_prefix": { + "type": "string", + "description": "IPv6 Network/Mask.", + "title": "Destination Address Prefix" + }, + "interface": { + "type": "string", + "title": "Interface" + }, + "gateway": { + "type": "string", + "description": "IPv6 Address.", + "title": "Gateway" + }, + "track_bfd": { + "type": "boolean", + "description": "Track next-hop using BFD.", + "title": "Track BFD" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + }, + "tag": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Tag" + }, + "name": { + "type": "string", + "description": "Description.", + "title": "Name" + }, + "metric": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Static Routes" + }, + "ipv6_unicast_routing": { + "type": "boolean", + "title": "IPv6 Unicast Routing" + }, + "is_deployed": { + "description": "Key only used for documentation or validation purposes.", + "type": "boolean", + "default": true, + "title": "Is Deployed" + }, + "l2_protocol": { + "type": "object", + "properties": { + "forwarding_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "bfd per-link rfc-7130", + "e-lmi", + "isis", + "lacp", + "lldp", + "macsec", + "pause", + "stp" + ], + "title": "Name" + }, + "forward": { + "type": "boolean", + "title": "Forward" + }, + "tagged_forward": { + "type": "boolean", + "title": "Tagged Forward" + }, + "untagged_forward": { + "type": "boolean", + "title": "Untagged Forward" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Forwarding Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "lacp": { + "type": "object", + "description": "Set Link Aggregation Control Protocol (LACP) parameters.", + "properties": { + "port_id": { + "type": "object", + "description": "LACP port-ID range configuration.", + "properties": { + "range": { + "type": "object", + "properties": { + "begin": { + "type": "integer", + "description": "Minimum LACP port-ID range.", + "title": "Begin" + }, + "end": { + "type": "integer", + "description": "Maximum LACP port-ID range.", + "title": "End" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Range" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port ID" + }, + "rate_limit": { + "type": "object", + "description": "Set LACPDU rate limit options.", + "properties": { + "default": { + "type": "boolean", + "description": "Enable LACPDU rate limiting by default on all ports.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rate Limit" + }, + "system_priority": { + "type": "integer", + "description": "Set local system LACP priority.", + "minimum": 0, + "maximum": 65535, + "title": "System Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "links_minimum": { + "type": "integer", + "minimum": 1, + "maximum": 100000, + "title": "Links Minimum" + }, + "recovery_delay": { + "type": "integer", + "minimum": 0, + "maximum": 3600, + "title": "Recovery Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "lldp": { + "type": "object", + "properties": { + "timer": { + "type": "integer", + "title": "Timer" + }, + "timer_reinitialization": { + "type": "string", + "title": "Timer Reinitialization" + }, + "holdtime": { + "type": "integer", + "title": "Holdtime" + }, + "management_address": { + "type": "string", + "title": "Management Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "receive_packet_tagged_drop": { + "type": "string", + "title": "Receive Packet Tagged Drop" + }, + "tlvs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "link-aggregation", + "management-address", + "max-frame-size", + "med", + "port-description", + "port-vlan", + "power-via-mdi", + "system-capabilities", + "system-description", + "system-name", + "vlan-name" + ], + "title": "Name" + }, + "transmit": { + "type": "boolean", + "title": "Transmit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "TLVs" + }, + "run": { + "type": "boolean", + "title": "Run" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "load_interval": { + "type": "object", + "properties": { + "default": { + "type": "integer", + "description": "Default load interval in seconds.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Load Interval" + }, + "local_users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Username.", + "type": "string", + "title": "Name" + }, + "disabled": { + "type": "boolean", + "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", + "title": "Disabled" + }, + "privilege": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Initial privilege level with local EXEC authorization.\n", + "title": "Privilege" + }, + "role": { + "type": "string", + "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", + "title": "Role" + }, + "sha512_password": { + "type": "string", + "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", + "title": "SHA512 Password" + }, + "no_password": { + "type": "boolean", + "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", + "title": "No Password" + }, + "ssh_key": { + "type": "string", + "title": "SSH Key" + }, + "secondary_ssh_key": { + "type": "string", + "title": "Secondary SSH Key" + }, + "shell": { + "type": "string", + "description": "Specify shell for the user.\n", + "enum": [ + "/bin/bash", + "/bin/sh", + "/sbin/nologin" + ], + "title": "Shell" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Users" + }, + "logging": { + "type": "object", + "properties": { + "console": { + "type": "string", + "enum": [ + "debugging", + "informational", + "notifications", + "warnings", + "errors", + "critical", + "alerts", + "emergencies", + "disabled" + ], + "description": "Console logging severity level.\n", + "title": "Console" + }, + "monitor": { + "type": "string", + "enum": [ + "debugging", + "informational", + "notifications", + "warnings", + "errors", + "critical", + "alerts", + "emergencies", + "disabled" + ], + "description": "Monitor logging severity level.\n", + "title": "Monitor" + }, + "buffered": { + "type": "object", + "properties": { + "size": { + "type": "integer", + "minimum": 10, + "maximum": 2147483647, + "title": "Size" + }, + "level": { + "type": "string", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "disabled" + ], + "description": "Buffer logging severity level.\n", + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Buffered" + }, + "trap": { + "type": "string", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "system", + "warnings", + "disabled" + ], + "description": "Trap logging severity level.\n", + "title": "Trap" + }, + "synchronous": { + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": [ + "alerts", + "all", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "disabled" + ], + "description": "Synchronous logging severity level.\n", + "default": "critical", + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Synchronous" + }, + "format": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "enum": [ + "high-resolution", + "traditional", + "traditional timezone", + "traditional year", + "traditional timezone year", + "traditional year timezone" + ], + "description": "Timestamp format.", + "title": "Timestamp" + }, + "hostname": { + "type": "string", + "enum": [ + "fqdn", + "ipv4" + ], + "description": "Hostname format in syslogs. For hostname _only_, remove the line. (default EOS CLI behaviour).", + "title": "Hostname" + }, + "sequence_numbers": { + "type": "boolean", + "description": "Add sequence numbers to log messages.\n", + "title": "Sequence Numbers" + }, + "rfc5424": { + "type": "boolean", + "description": "Forward logs in RFC5424 format.\n", + "title": "Rfc5424" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Format" + }, + "facility": { + "type": "string", + "enum": [ + "auth", + "cron", + "daemon", + "kern", + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7", + "lpr", + "mail", + "news", + "sys9", + "sys10", + "sys11", + "sys12", + "sys13", + "sys14", + "syslog", + "user", + "uucp" + ], + "title": "Facility" + }, + "source_interface": { + "type": "string", + "description": "Source Interface Name.", + "title": "Source Interface" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Syslog server name.", + "title": "Name" + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "udp", + "title": "Protocol" + }, + "ports": { + "type": "array", + "items": { + "type": "integer" + }, + "title": "Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "policy": { + "type": "object", + "properties": { + "match": { + "type": "object", + "properties": { + "match_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Match list.", + "title": "Name" + }, + "action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Match Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Match" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy" + }, + "event": { + "type": "object", + "properties": { + "storm_control": { + "type": "object", + "properties": { + "discards": { + "type": "object", + "properties": { + "global": { + "type": "boolean", + "title": "Global" + }, + "interval": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "description": "Logging interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + }, + "level": { + "type": "array", + "description": "Configure logging severity.", + "items": { + "type": "object", + "properties": { + "facility": { + "type": "string", + "title": "Facility" + }, + "severity": { + "type": "string", + "description": "Severity of facility. Below are the supported severites.\nemergencies System is unusable (severity=0)\nalerts Immediate action needed (severity=1)\ncritical Critical conditions (severity=2)\nerrors Error conditions (severity=3)\nwarnings Warning conditions (severity=4)\nnotifications Normal but significant conditions (severity=5)\ninformational Informational messages (severity=6)\ndebugging Debugging messages (severity=7)\n<0-7> Severity level value", + "enum": [ + "alerts", + "critical", + "debugging", + "emergencies", + "errors", + "informational", + "notifications", + "warnings", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "title": "Severity" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "facility" + ] + }, + "title": "Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "loopback_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Loopback interface name e.g. \"Loopback0\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "mpls": { + "type": "object", + "properties": { + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "node_segment": { + "type": "object", + "properties": { + "ipv4_index": { + "type": "integer", + "title": "IPv4 Index" + }, + "ipv6_index": { + "type": "integer", + "title": "IPv6 Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Node Segment" + }, + "eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the loopback interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Loopback Interfaces" + }, + "mac_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "MAC Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "title": "Sequence" + }, + "action": { + "type": "string", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Entries" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "MAC Access Lists" + }, + "mac_address_table": { + "type": "object", + "properties": { + "aging_time": { + "type": "integer", + "description": "Aging time in seconds.", + "title": "Aging Time" + }, + "notification_host_flap": { + "type": "object", + "properties": { + "logging": { + "type": "boolean", + "title": "Logging" + }, + "detection": { + "type": "object", + "properties": { + "window": { + "type": "integer", + "minimum": 2, + "maximum": 300, + "title": "Window" + }, + "moves": { + "type": "integer", + "minimum": 2, + "maximum": 10, + "title": "Moves" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Detection" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Notification Host Flap" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Table" + }, + "mac_security": { + "type": "object", + "title": "MAC Security (MACsec)", + "properties": { + "license": { + "type": "object", + "properties": { + "license_name": { + "type": "string", + "title": "License Name" + }, + "license_key": { + "type": "string", + "title": "License Key" + } + }, + "required": [ + "license_name", + "license_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "License" + }, + "fips_restrictions": { + "type": "boolean", + "title": "Fips Restrictions" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile-Name.", + "title": "Name" + }, + "cipher": { + "type": "string", + "enum": [ + "aes128-gcm", + "aes128-gcm-xpn", + "aes256-gcm", + "aes256-gcm-xpn" + ], + "title": "Cipher" + }, + "connection_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "encrypted_key": { + "type": "string", + "title": "Encrypted Key" + }, + "fallback": { + "type": "boolean", + "title": "Fallback" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Connection Keys" + }, + "mka": { + "type": "object", + "properties": { + "key_server_priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Key Server Priority" + }, + "session": { + "type": "object", + "properties": { + "rekey_period": { + "type": "integer", + "minimum": 30, + "maximum": 100000, + "description": "Rekey period in seconds.", + "title": "Rekey Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Session" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MKA" + }, + "sci": { + "type": "boolean", + "title": "SCI" + }, + "l2_protocols": { + "type": "object", + "properties": { + "ethernet_flow_control": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "encrypt", + "bypass" + ], + "title": "Mode" + } + }, + "required": [ + "mode" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Flow Control" + }, + "lldp": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "bypass", + "bypass unauthorized" + ], + "title": "Mode" + } + }, + "required": [ + "mode" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocols" + }, + "traffic_unprotected": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "Allow/drop the transmit/receive of unprotected traffic.", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_active_sak": { + "type": "boolean", + "description": "Allow transmit/receive of encrypted traffic using operational SAK and block otherwise.", + "title": "Allow Active Sak" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Unprotected" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "maintenance": { + "type": "object", + "title": "Maintenance Mode", + "properties": { + "default_interface_profile": { + "type": "string", + "description": "Name of default Interface Profile.\n", + "title": "Default Interface Profile" + }, + "default_bgp_profile": { + "type": "string", + "description": "Name of default BGP Profile.\n", + "title": "Default BGP Profile" + }, + "default_unit_profile": { + "type": "string", + "description": "Name of default Unit Profile.\n", + "title": "Default Unit Profile" + }, + "interface_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "rate_monitoring": { + "type": "object", + "properties": { + "load_interval": { + "type": "integer", + "description": "Load Interval in Seconds.\n", + "title": "Load Interval" + }, + "threshold": { + "type": "integer", + "description": "Threshold in kbps.\n", + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rate Monitoring" + }, + "shutdown": { + "type": "object", + "properties": { + "max_delay": { + "type": "integer", + "description": "Max delay in seconds.\n", + "title": "Max Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Interface Profiles" + }, + "bgp_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "BGP Profile Name.", + "title": "Name" + }, + "initiator": { + "type": "object", + "properties": { + "route_map_inout": { + "type": "string", + "description": "Route Map.", + "title": "Route Map Inout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Initiator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "BGP Profiles" + }, + "unit_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unit Profile Name.", + "title": "Name" + }, + "on_boot": { + "type": "object", + "properties": { + "duration": { + "type": "integer", + "minimum": 300, + "maximum": 3600, + "description": "On-boot in seconds.\n", + "title": "Duration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "On Boot" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Unit Profiles" + }, + "units": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unit Name.", + "title": "Name" + }, + "quiesce": { + "type": "boolean", + "title": "Quiesce" + }, + "profile": { + "type": "string", + "description": "Name of Unit Profile.\n", + "title": "Profile" + }, + "groups": { + "type": "object", + "properties": { + "bgp_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Name of BGP Group.\n" + }, + "title": "BGP Groups" + }, + "interface_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Name of Interface Group.\n" + }, + "title": "Interface Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Units" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "management_accounts": { + "type": "object", + "properties": { + "password": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Password" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Accounts" + }, + "management_api_gnmi": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "default": "eos-native", + "title": "Provider" + }, + "transport": { + "type": "object", + "properties": { + "grpc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Transport name.", + "title": "Name" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "vrf": { + "type": "string", + "description": "VRF name is optional.", + "title": "VRF" + }, + "notification_timestamp": { + "type": "string", + "enum": [ + "send-time", + "last-change-time" + ], + "description": "Per the gNMI specification, the default timestamp field of a notification message is set to be\nthe time at which the value of the underlying data source changes or when the reported event takes place.\nIn order to facilitate integration in legacy environments oriented around polling style operations,\nan option to support overriding the timestamp field to the send-time is available from EOS 4.27.0F.\n", + "title": "Notification Timestamp" + }, + "ip_access_group": { + "type": "string", + "description": "ACL name.", + "title": "IP Access Group" + }, + "port": { + "type": "integer", + "description": "GNMI port.\nMake sure to update the control-plane ACL accordingly in order for the service to be reachable by external applications.\n", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Grpc" + }, + "grpc_tunnels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Transport name.", + "title": "Name" + }, + "shutdown": { + "type": "boolean", + "description": "Operational status of the gRPC tunnel.", + "title": "Shutdown" + }, + "tunnel_ssl_profile": { + "type": "string", + "description": "Tunnel SSL profile name.", + "title": "Tunnel SSL Profile" + }, + "gnmi_ssl_profile": { + "type": "string", + "description": "gNMI SSL profile name.", + "title": "gNMI SSL Profile" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "destination": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "IP address or hostname.", + "title": "Address" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + } + }, + "required": [ + "name", + "port" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "target": { + "type": "object", + "properties": { + "use_serial_number": { + "type": "boolean", + "description": "Use serial number as the Target ID.", + "title": "Use Serial Number" + }, + "target_ids": { + "type": "array", + "description": "Target IDs as a list.\n", + "items": { + "type": "string" + }, + "title": "Target IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Grpc Tunnels" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transport" + }, + "enable_vrfs": { + "type": "array", + "description": "These should not be mixed with the new keys above.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use transport.grpc instead.", + "deprecated": true, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "access_group": { + "type": "string", + "description": "Standard IPv4 ACL name.", + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Enable VRFs" + }, + "octa": { + "type": "object", + "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", + "deprecated": true, + "title": "Octa" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API gNMI" + }, + "management_api_http": { + "type": "object", + "properties": { + "enable_http": { + "type": "boolean", + "title": "Enable HTTP" + }, + "enable_https": { + "type": "boolean", + "title": "Enable Https" + }, + "https_ssl_profile": { + "description": "SSL Profile Name.", + "type": "string", + "title": "Https SSL Profile" + }, + "default_services": { + "type": "boolean", + "description": "Enable default services: capi-doc and tapagg.", + "title": "Default Services" + }, + "enable_vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "VRF Name.", + "type": "string", + "title": "Name" + }, + "access_group": { + "description": "Standard IPv4 ACL name.", + "type": "string", + "title": "Access Group" + }, + "ipv6_access_group": { + "description": "Standard IPv6 ACL name.", + "type": "string", + "title": "IPv6 Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Enable VRFs" + }, + "protocol_https_certificate": { + "type": "object", + "properties": { + "certificate": { + "type": "string", + "description": "Name of certificate; private key must also be specified.", + "title": "Certificate" + }, + "private_key": { + "type": "string", + "description": "Name of private key; certificate must also be specified.", + "title": "Private Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Protocol Https Certificate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API HTTP" + }, + "management_api_models": { + "type": "object", + "properties": { + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "sysdb", + "smash" + ], + "title": "Name" + }, + "paths": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Path" + }, + "disabled": { + "type": "boolean", + "default": false, + "title": "Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Providers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management API Models" + }, + "management_console": { + "type": "object", + "properties": { + "idle_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "title": "Idle Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Console" + }, + "management_cvx": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "server_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP or hostname." + }, + "title": "Server Hosts" + }, + "source_interface": { + "type": "string", + "description": "Interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management CVX" + }, + "management_defaults": { + "type": "object", + "properties": { + "secret": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "enum": [ + "md5", + "sha512" + ], + "title": "Hash" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secret" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Defaults" + }, + "management_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Management Interface Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "type": { + "type": "string", + "enum": [ + "oob", + "inband" + ], + "default": "oob", + "description": "For documentation purposes only.", + "title": "Type" + }, + "gateway": { + "type": "string", + "description": "IPv4 address of default gateway in management VRF.", + "title": "Gateway" + }, + "ipv6_gateway": { + "type": "string", + "description": "IPv6 address of default gateway in management VRF.", + "title": "IPv6 Gateway" + }, + "mac_address": { + "type": "string", + "description": "MAC address.", + "title": "MAC Address" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the management interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Management Interfaces" + }, + "management_security": { + "type": "object", + "properties": { + "entropy_source": { + "type": "string", + "title": "Entropy Source" + }, + "entropy_sources": { + "type": "object", + "description": "Source of entropy.", + "properties": { + "hardware": { + "type": "boolean", + "description": "Use a hardware based source.", + "title": "Hardware" + }, + "haveged": { + "type": "boolean", + "description": "Use the HAVEGE algorithm.", + "title": "Haveged" + }, + "cpu_jitter": { + "type": "boolean", + "description": "Use the Jitter RNG algorithm of a CPU based source.", + "title": "CPU Jitter" + }, + "hardware_exclusive": { + "type": "boolean", + "description": "Only use entropy from the hardware source.", + "title": "Hardware Exclusive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Entropy Sources" + }, + "password": { + "type": "object", + "properties": { + "minimum_length": { + "type": "integer", + "minimum": 1, + "maximum": 32, + "title": "Minimum Length" + }, + "encryption_key_common": { + "type": "boolean", + "title": "Encryption Key Common" + }, + "encryption_reversible": { + "type": "string", + "title": "Encryption Reversible" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "minimum": { + "type": "object", + "properties": { + "digits": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Digits" + }, + "length": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Length" + }, + "lower": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Lower" + }, + "special": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Special" + }, + "upper": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Upper" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Minimum" + }, + "maximum": { + "type": "object", + "properties": { + "repetitive": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Repetitive" + }, + "sequential": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Sequential" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Password" + }, + "ssl_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "tls_versions": { + "type": "string", + "description": "List of allowed TLS versions as string.\nExamples:\n - \"1.0\"\n - \"1.0 1.1\"\n", + "title": "TLS Versions" + }, + "cipher_list": { + "type": "string", + "description": "cipher_list syntax follows the openssl cipher strings format.\nColon (:) separated list of allowed ciphers as a string.\n", + "title": "Cipher List" + }, + "trust_certificate": { + "type": "object", + "properties": { + "certificates": { + "type": "array", + "description": "List of trust certificate names.\nExamples:\n - test1.crt\n - test2.crt\n", + "items": { + "type": "string" + }, + "title": "Certificates" + }, + "requirement": { + "type": "object", + "properties": { + "basic_constraint_ca": { + "type": "boolean", + "title": "Basic Constraint Ca" + }, + "hostname_fqdn": { + "type": "boolean", + "description": "Enforce hostname to be FQDN without wildcard.\n", + "title": "Hostname Fqdn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Requirement" + }, + "policy_expiry_date_ignore": { + "type": "boolean", + "title": "Policy Expiry Date Ignore" + }, + "system": { + "type": "boolean", + "description": "Use system-supplied trust certificates.\n", + "title": "System" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trust Certificate" + }, + "chain_certificate": { + "type": "object", + "properties": { + "certificates": { + "type": "array", + "description": "List of chain certificate names.\nExamples:\n - chain1.crt\n - chain2.crt\n", + "items": { + "type": "string" + }, + "title": "Certificates" + }, + "requirement": { + "type": "object", + "properties": { + "basic_constraint_ca": { + "type": "boolean", + "title": "Basic Constraint Ca" + }, + "include_root_ca": { + "type": "boolean", + "title": "Include Root Ca" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Requirement" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Chain Certificate" + }, + "certificate": { + "type": "object", + "properties": { + "file": { + "type": "string", + "title": "File" + }, + "key": { + "type": "string", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Certificate" + }, + "certificate_revocation_lists": { + "type": "array", + "description": "List of CRLs (Certificate Revocation List).\nIf specified, one CRL needs to be provided for every certificate in the chain, even if the revocation list in the CRL is empty.\n", + "items": { + "type": "string" + }, + "title": "Certificate Revocation Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "SSL Profiles" + }, + "shared_secret_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "secrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "secret": { + "type": "string", + "title": "Secret" + }, + "secret_type": { + "type": "string", + "default": "7", + "enum": [ + "0", + "7", + "8a" + ], + "title": "Secret Type" + }, + "receive_lifetime": { + "type": "object", + "properties": { + "infinite": { + "type": "boolean", + "title": "Infinite" + }, + "start_date_time": { + "type": "string", + "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "Start Date Time" + }, + "end_date_time": { + "type": "string", + "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "End Date Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Receive Lifetime" + }, + "transmit_lifetime": { + "type": "object", + "properties": { + "infinite": { + "type": "boolean", + "title": "Infinite" + }, + "start_date_time": { + "type": "string", + "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "Start Date Time" + }, + "end_date_time": { + "type": "string", + "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", + "title": "End Date Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transmit Lifetime" + }, + "local_time": { + "type": "boolean", + "description": "Configuring secret using the local timezone from system clock. Default is UTC.", + "title": "Local Time" + } + }, + "required": [ + "secret", + "receive_lifetime", + "transmit_lifetime", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Secrets" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "profile" + ] + }, + "title": "Shared Secret Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Security" + }, + "management_ssh": { + "type": "object", + "properties": { + "access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Standard ACL Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Access Groups" + }, + "ipv6_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Standard ACL Name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Access Groups" + }, + "idle_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 86400, + "description": "Idle timeout in minutes.", + "title": "Idle Timeout" + }, + "cipher": { + "description": "Cryptographic ciphers for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Cipher" + }, + "key_exchange": { + "description": "Cryptographic key exchange methods for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Key Exchange" + }, + "mac": { + "description": "Cryptographic MAC algorithms for SSH to use.", + "type": "array", + "items": { + "type": "string" + }, + "title": "MAC" + }, + "fips_restrictions": { + "type": "boolean", + "description": "Use FIPS compliant algorithms.", + "title": "Fips Restrictions" + }, + "hostkey": { + "type": "object", + "properties": { + "server": { + "description": "SSH host key settings.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Server" + }, + "server_cert": { + "type": "string", + "description": "Configure switch's hostkey cert file.", + "title": "Server Cert" + }, + "client_strict_checking": { + "type": "boolean", + "description": "Enforce strict host key checking.", + "title": "Client Strict Checking" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hostkey" + }, + "enable": { + "description": "Enable SSH daemon.", + "type": "boolean", + "title": "Enable" + }, + "connection": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Maximum total number of SSH sessions to device.", + "title": "Limit" + }, + "per_host": { + "type": "integer", + "minimum": 1, + "maximum": 20, + "description": "Maximum number of SSH sessions to device from a single host.", + "title": "Per Host" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connection" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "enable": { + "description": "Enable SSH in VRF.", + "type": "boolean", + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "log_level": { + "type": "string", + "description": "SSH daemon log level.", + "title": "Log Level" + }, + "client_alive": { + "type": "object", + "properties": { + "count_max": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "Number of keep-alive packets that can be sent without a response before the connection is assumed dead.", + "title": "Count Max" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "Time period (in seconds) to send SSH keep-alive packets.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client Alive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management SSH" + }, + "management_tech_support": { + "type": "object", + "properties": { + "policy_show_tech_support": { + "type": "object", + "properties": { + "exclude_commands": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "Command to exclude from tech-support.", + "title": "Command" + }, + "type": { + "type": "string", + "enum": [ + "text", + "json" + ], + "default": "text", + "description": "The supported values for type are platform dependent.", + "title": "Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Exclude Commands" + }, + "include_commands": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "Command to include in tech-support.", + "title": "Command" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Include Commands" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy Show Tech Support" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Management Tech Support" + }, + "match_list_input": { + "type": "object", + "title": "Match Lists", + "properties": { + "prefix_ipv4": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "minItems": 1, + "description": "List of IPv4 prefixes (with the subnet mask e.g. 192.0.2.0/24).", + "items": { + "type": "string" + }, + "title": "Prefixes" + } + }, + "required": [ + "prefixes", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix IPv4" + }, + "prefix_ipv6": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "minItems": 1, + "description": "List of IPv6 prefixes (with the subnet mask e.g. 2001:db8:abcd:0013::/64).", + "items": { + "type": "string" + }, + "title": "Prefixes" + } + }, + "required": [ + "prefixes", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix IPv6" + }, + "string": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Match-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "match_regex": { + "type": "string", + "description": "Regular Expression.", + "title": "Match Regex" + } + }, + "required": [ + "match_regex", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "String" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "mcs_client": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "cvx_secondary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "server_hosts": { + "type": "array", + "items": { + "type": "string", + "description": "IP or hostname." + }, + "title": "Server Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CVX Secondary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MCS Client" + }, + "metadata": { + "type": "object", + "description": "The data under `metadata` is used for documentation, validation or integration purposes.\nIt will not affect the generated EOS configuration.", + "properties": { + "platform": { + "type": "string", + "title": "Platform" + }, + "system_mac_address": { + "type": "string", + "title": "System MAC Address" + }, + "cv_tags": { + "type": "object", + "properties": { + "device_tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "value": { + "type": "string", + "title": "Value" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Device Tags" + }, + "interface_tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "interface": { + "type": "string", + "title": "Interface" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "value": { + "type": "string", + "title": "Value" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tags" + } + }, + "required": [ + "interface" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Tags" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cv Tags" + }, + "cv_pathfinder": { + "type": "object", + "description": "Metadata used for CV Pathfinder visualization on CloudVision.", + "properties": { + "role": { + "type": "string", + "title": "Role" + }, + "region": { + "type": "string", + "title": "Region" + }, + "zone": { + "type": "string", + "title": "Zone" + }, + "site": { + "type": "string", + "title": "Site" + }, + "vtep_ip": { + "type": "string", + "title": "Vtep IP" + }, + "ssl_profile": { + "type": "string", + "title": "SSL Profile" + }, + "address": { + "type": "string", + "title": "Address" + }, + "pathfinders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vtep_ip": { + "type": "string", + "title": "Vtep IP" + } + }, + "required": [ + "vtep_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathfinders" + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "carrier": { + "type": "string", + "title": "Carrier" + }, + "circuit_id": { + "type": "string", + "title": "Circuit ID" + }, + "pathgroup": { + "type": "string", + "title": "Pathgroup" + }, + "public_ip": { + "type": "string", + "title": "Public IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interfaces" + }, + "pathgroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "carriers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Carriers" + }, + "imported_carriers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Imported Carriers" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathgroups" + }, + "regions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "zones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "sites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "location": { + "type": "object", + "properties": { + "address": { + "type": "string", + "title": "Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Location" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sites" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Zones" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Regions" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "avts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "constraints": { + "type": "object", + "properties": { + "jitter": { + "type": "integer", + "title": "Jitter" + }, + "latency": { + "type": "integer", + "title": "Latency" + }, + "lossrate": { + "type": "string", + "title": "Lossrate" + }, + "hop_count": { + "type": "string", + "title": "Hop Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Constraints" + }, + "description": { + "type": "string", + "title": "Description" + }, + "id": { + "type": "integer", + "title": "ID" + }, + "name": { + "type": "string", + "title": "Name" + }, + "pathgroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "preference": { + "type": "string", + "title": "Preference" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Pathgroups" + }, + "application_profiles": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Application Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Avts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VRFs" + }, + "internet_exit_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "title": "Type" + }, + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + }, + "upload_bandwidth": { + "type": "integer", + "title": "Upload Bandwidth" + }, + "download_bandwidth": { + "type": "integer", + "title": "Download Bandwidth" + }, + "firewall": { + "type": "boolean", + "title": "Firewall" + }, + "ips_control": { + "type": "boolean", + "title": "Ips Control" + }, + "acceptable_use_policy": { + "type": "boolean", + "title": "Acceptable Use Policy" + }, + "vpn_credentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fqdn": { + "type": "string", + "title": "Fqdn" + }, + "vpn_type": { + "type": "string", + "title": "VPN Type" + }, + "pre_shared_key": { + "type": "string", + "title": "Pre Shared Key" + } + }, + "required": [ + "fqdn", + "vpn_type", + "pre_shared_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VPN Credentials" + }, + "tunnels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "preference": { + "type": "string", + "title": "Preference" + } + }, + "required": [ + "name", + "preference" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tunnels" + } + }, + "required": [ + "name", + "type", + "city", + "country", + "firewall", + "ips_control", + "acceptable_use_policy", + "vpn_credentials", + "tunnels" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Internet Exit Policies" + }, + "applications": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "builtin_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Builtin Applications" + }, + "user_defined_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "User Defined Applications" + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "category": { + "type": "string", + "title": "Category" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Categories" + }, + "transport_protocols": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Transport Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Profiles" + }, + "categories": { + "type": "object", + "properties": { + "builtin_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "category": { + "type": "string", + "title": "Category" + }, + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Services" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Builtin Applications" + }, + "user_defined_applications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "category": { + "type": "string", + "title": "Category" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "User Defined Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Categories" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Applications" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Cv Pathfinder" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Metadata" + }, + "mlag_configuration": { + "type": "object", + "title": "Multi-Chassis Link Aggregation (MLAG) Configuration", + "properties": { + "domain_id": { + "type": "string", + "title": "Domain ID" + }, + "heartbeat_interval": { + "type": "integer", + "description": "Heartbeat interval in milliseconds.", + "title": "Heartbeat Interval" + }, + "local_interface": { + "description": "Local Interface Name.", + "type": "string", + "title": "Local Interface" + }, + "peer_address": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "Peer Address" + }, + "peer_address_heartbeat": { + "type": "object", + "properties": { + "peer_ip": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "Peer IP" + }, + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Peer Address Heartbeat" + }, + "dual_primary_detection_delay": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Detection Delay" + }, + "dual_primary_recovery_delay_mlag": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Recovery Delay MLAG" + }, + "dual_primary_recovery_delay_non_mlag": { + "type": "integer", + "description": "Delay in seconds.", + "minimum": 0, + "maximum": 86400, + "title": "Dual Primary Recovery Delay Non MLAG" + }, + "peer_link": { + "description": "Port-Channel interface name.", + "type": "string", + "title": "Peer Link" + }, + "reload_delay_mlag": { + "type": "string", + "description": "Delay in seconds <0-86400> or 'infinity'.", + "title": "Reload Delay MLAG" + }, + "reload_delay_non_mlag": { + "type": "string", + "description": "Delay in seconds <0-86400> or 'infinity'.", + "title": "Reload Delay Non MLAG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "monitor_connectivity": { + "type": "object", + "properties": { + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "interval": { + "type": "integer", + "title": "Interval" + }, + "interface_sets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "interfaces": { + "type": "string", + "description": "Interface range(s) should be of same type, Ethernet, Loopback, Management etc.\nMultiple interface ranges can be specified separated by \",\".\n", + "title": "Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Sets" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Host Name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip": { + "type": "string", + "title": "IP" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "url": { + "type": "string", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "VRF Name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "interface_sets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "interfaces": { + "type": "string", + "title": "Interfaces" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Interface Sets" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Host name.", + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip": { + "type": "string", + "title": "IP" + }, + "local_interfaces": { + "type": "string", + "title": "Local Interfaces" + }, + "address_only": { + "type": "boolean", + "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", + "default": true, + "title": "Address Only" + }, + "url": { + "type": "string", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Hosts" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Connectivity" + }, + "monitor_layer1": { + "type": "object", + "description": "Enable SYSLOG messages on transceiver SMBus communication failures.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable monitor layer1.", + "title": "Enabled" + }, + "logging_mac_fault": { + "type": "boolean", + "description": "Enable MAC fault logging.", + "title": "Logging MAC Fault" + }, + "logging_transceiver": { + "type": "object", + "description": "Configure transceiver monitoring logging.", + "properties": { + "dom": { + "type": "boolean", + "description": "Enable transceiver Digital Optical Monitoring (DOM) logging.", + "title": "Dom" + }, + "communication": { + "type": "boolean", + "description": "Enable transceiver SMBus fail and reset logging.", + "title": "Communication" + }, + "enabled": { + "type": "boolean", + "description": "Some platforms support only the `logging transceiver` command. `enabled` key configures this command.", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging Transceiver" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Layer1" + }, + "monitor_sessions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Session Name.", + "title": "Name" + }, + "sources": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name, range or comma separated list.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "rx", + "tx", + "both" + ], + "title": "Direction" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL Name.", + "type": "string", + "title": "Name" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sources" + }, + "destinations": { + "type": "array", + "items": { + "type": "string", + "description": "'cpu' or interface name, range or comma separated list." + }, + "title": "Destinations" + }, + "encapsulation_gre_metadata_tx": { + "type": "boolean", + "title": "Encapsulation Gre Metadata TX" + }, + "header_remove_size": { + "type": "integer", + "description": "Number of bytes to remove from header.", + "title": "Header Remove Size" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL Name.", + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + }, + "rate_limit_per_ingress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Ingress Chip" + }, + "rate_limit_per_egress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Egress Chip" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "truncate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "type": "integer", + "description": "Size in bytes.", + "title": "Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncate" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Monitor Sessions" + }, + "monitor_telemetry_influx": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "title": "VRF" + }, + "destinations": { + "type": "array", + "description": "Configure telemetry output destinations.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "InfluxDB connection name.", + "title": "Name" + }, + "database": { + "type": "string", + "description": "Set name of the database.", + "title": "Database" + }, + "data_retention_policy": { + "type": "string", + "title": "Data Retention Policy" + }, + "url": { + "type": "string", + "description": "It only accepts http(s), udp and unix domain destination URL.", + "pattern": "(http(s)?|udp|unix)://.+", + "title": "URL" + }, + "username": { + "type": "string", + "title": "Username" + }, + "password": { + "type": "string", + "title": "Password" + }, + "password_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Password Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Destinations" + }, + "source_group_standard_disabled": { + "type": "boolean", + "description": "Disable standard set of telemetry.", + "title": "Source Group Standard Disabled" + }, + "source_sockets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Label of the socket connection.", + "title": "Name" + }, + "connection_limit": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Connection Limit" + }, + "url": { + "type": "string", + "description": "It only accepts http(s), udp and unix domain socket URL.", + "pattern": "(http(s)?|udp|unix)://.+", + "title": "URL" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Source Sockets" + }, + "tags": { + "type": "array", + "description": "Extra tags added to the telemetry output.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Key of the global tag pair.", + "title": "Name" + }, + "value": { + "type": "string", + "description": "Value of the global tag pair.", + "title": "Value" + } + }, + "required": [ + "value", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Tags" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Telemetry Influx" + }, + "monitor_telemetry_postcard_policy": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "default": true, + "description": "Enable or disable the postcard telemetry feature.", + "title": "Disabled" + }, + "ingress": { + "type": "object", + "properties": { + "collection": { + "type": "object", + "description": "Collector configuration.", + "properties": { + "source": { + "type": "string", + "description": "Source IP address of GRE tunnel.", + "title": "Source" + }, + "destination": { + "type": "string", + "description": "Destination IP address of GRE tunnel.", + "title": "Destination" + }, + "version": { + "type": "integer", + "description": "Postcard version.", + "enum": [ + 1, + 2 + ], + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Collection" + }, + "sample": { + "type": "object", + "description": "Sampling parameters.", + "properties": { + "rate": { + "type": "integer", + "description": "Sampling rate. `rate` is preferred when both `rate` and `tcp_udp_checksum` are defined.", + "enum": [ + 16384, + 32768, + 65536 + ], + "title": "Rate" + }, + "tcp_udp_checksum": { + "type": "object", + "description": "TCP/UDP parameters.", + "properties": { + "value": { + "type": "integer", + "description": "TCP/UDP checksum or IP ID value.", + "minimum": 0, + "maximum": 65535, + "title": "Value" + }, + "mask": { + "type": "string", + "description": "16 bit hexadecimal mask for TCP/UDP or IP ID with atmost 2 unset bits.", + "title": "Mask" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP UDP Checksum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sample" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ingress" + }, + "marker_vxlan": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable vxlan marking using default bit 0.", + "title": "Enabled" + }, + "header_word_zero_bit": { + "type": "integer", + "minimum": 1, + "maximum": 31, + "title": "Header Word Zero Bit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Marker VxLAN" + }, + "profiles": { + "type": "array", + "description": "Postcard telemetry profiles.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile name.", + "title": "Name" + }, + "ingress_sample_policy": { + "type": "string", + "title": "Ingress Sample Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "sample_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "match_rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "type": { + "type": "string", + "description": "IP address version.", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Type" + }, + "destination_prefix": { + "type": "string", + "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", + "title": "Destination Prefix" + }, + "source_prefix": { + "type": "string", + "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", + "title": "Source Prefix" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "title": "Protocol" + }, + "source_ports": { + "type": "array", + "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\" ]\n [ \"www\" ]", + "items": { + "type": "string" + }, + "title": "Source Ports" + }, + "destination_ports": { + "type": "array", + "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\", \"80\" ]\n [ \"https\" ]", + "items": { + "type": "string" + }, + "title": "Destination Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "protocol" + ] + }, + "title": "Protocols" + } + }, + "required": [ + "type", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Match Rules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Sample Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor Telemetry Postcard Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface_disabled_default": { + "type": "boolean", + "title": "Interface Disabled Default" + }, + "router_id": { + "type": "string", + "title": "Router ID" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "transport_address_interface": { + "description": "Interface Name.", + "type": "string", + "title": "Transport Address Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + }, + "icmp": { + "description": "Enables the LSRs to generate ICMP reply messages and deliver them to the originating host.", + "type": "object", + "properties": { + "fragmentation_needed_tunneling": { + "type": "boolean", + "description": "Enables the MPLS tunneling of MTU exceeded ICMP replies (fragmentation needed, packet too big).", + "title": "Fragmentation Needed Tunneling" + }, + "ttl_exceeded_tunneling": { + "type": "boolean", + "description": "Enables the MPLS tunneling of TTL exceeded ICMP replies.", + "title": "TTL Exceeded Tunneling" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ICMP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "name_server": { + "type": "object", + "properties": { + "source": { + "type": "object", + "properties": { + "vrf": { + "description": "VRF Name.", + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "nodes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Nodes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Name Server" + }, + "ntp": { + "type": "object", + "properties": { + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Source interface.", + "title": "Name" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", + "title": "Name" + }, + "burst": { + "type": "boolean", + "title": "Burst" + }, + "iburst": { + "type": "boolean", + "title": "Iburst" + }, + "key": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key" + }, + "local_interface": { + "type": "string", + "description": "Source interface.", + "title": "Local Interface" + }, + "maxpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of maxpoll between 3 - 17 (Logarithmic).", + "title": "Maxpoll" + }, + "minpoll": { + "type": "integer", + "minimum": 3, + "maximum": 17, + "description": "Value of minpoll between 3 - 17 (Logarithmic).", + "title": "Minpoll" + }, + "preferred": { + "type": "boolean", + "title": "Preferred" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 4, + "title": "Version" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Servers" + }, + "authenticate": { + "type": "boolean", + "title": "Authenticate" + }, + "authenticate_servers_only": { + "type": "boolean", + "title": "Authenticate Servers Only" + }, + "authentication_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65534, + "description": "Key identifier.", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Obfuscated key.", + "title": "Key" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "title": "Key Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Authentication Keys" + }, + "trusted_keys": { + "type": "string", + "description": "List of trusted-keys as string ex. 10-12,15.", + "title": "Trusted Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "NTP" + }, + "patch_panel": { + "type": "object", + "properties": { + "connector": { + "type": "object", + "properties": { + "interface": { + "type": "object", + "properties": { + "patch": { + "type": "object", + "properties": { + "bgp_vpws_remote_failure_errdisable": { + "type": "boolean", + "title": "BGP Vpws Remote Failure Errdisable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Patch" + }, + "recovery": { + "type": "object", + "properties": { + "review_delay": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "minimum": 10, + "maximum": 600, + "description": "Minimum delay.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 15, + "maximum": 900, + "description": "Maximum delay.", + "title": "Max" + } + }, + "required": [ + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Review Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Recovery" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connector" + }, + "patches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "connectors": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "description": "Must have exactly two connectors to a patch of which at least one must be of type \"interface\".", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "type": { + "type": "string", + "enum": [ + "interface", + "pseudowire" + ], + "title": "Type" + }, + "endpoint": { + "type": "string", + "description": "String with relevant endpoint depending on type.\nExamples:\n- \"Ethernet1\"\n- \"Ethernet1 dot1q vlan 123\"\n- \"bgp vpws TENANT_A pseudowire VPWS_PW_1\"\n- \"ldp LDP_PW_1\"\n", + "title": "Endpoint" + } + }, + "required": [ + "type", + "endpoint", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Connectors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Patches" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Patch Panel" + }, + "peer_filters": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-filter Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "match": { + "type": "string", + "description": "Match as string.\nExample: \"as-range 1-100 result accept\"\n", + "title": "Match" + } + }, + "required": [ + "match", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Peer Filters" + }, + "platform": { + "type": "object", + "description": "Every key below this point is platform dependent.", + "properties": { + "trident": { + "type": "object", + "properties": { + "forwarding_table_partition": { + "type": "string", + "title": "Forwarding Table Partition" + }, + "mmu": { + "type": "object", + "description": "Memory Management Unit settings.\n", + "properties": { + "active_profile": { + "type": "string", + "description": "The queue profile to be applied to the platform.\n", + "title": "Active Profile" + }, + "queue_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "multicast_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "ID" + }, + "unit": { + "type": "string", + "enum": [ + "bytes", + "cells" + ], + "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", + "title": "Unit" + }, + "reserved": { + "type": "integer", + "description": "Amount of memory that should be reserved for this\nqueue.\n", + "title": "Reserved" + }, + "threshold": { + "type": "string", + "description": "Dynamic Shared Memory threshold.\n", + "title": "Threshold" + }, + "drop": { + "type": "object", + "properties": { + "precedence": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "title": "Precedence" + }, + "threshold": { + "type": "string", + "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", + "title": "Threshold" + } + }, + "required": [ + "precedence", + "threshold" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Multicast Queues" + }, + "unicast_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "ID" + }, + "unit": { + "type": "string", + "enum": [ + "bytes", + "cells" + ], + "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", + "title": "Unit" + }, + "reserved": { + "type": "integer", + "description": "Amount of memory that should be reserved for this\nqueue.\n", + "title": "Reserved" + }, + "threshold": { + "type": "string", + "description": "Dynamic Shared Memory threshold.\n", + "title": "Threshold" + }, + "drop": { + "type": "object", + "properties": { + "precedence": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "title": "Precedence" + }, + "threshold": { + "type": "string", + "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", + "title": "Threshold" + } + }, + "required": [ + "precedence", + "threshold" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Unicast Queues" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Queue Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mmu" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trident" + }, + "sand": { + "type": "object", + "description": "Most of the platform sand options are hardware dependent and optional.", + "properties": { + "qos_maps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Traffic Class" + }, + "to_network_qos": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "title": "To Network QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "QOS Maps" + }, + "lag": { + "type": "object", + "properties": { + "hardware_only": { + "type": "boolean", + "title": "Hardware Only" + }, + "mode": { + "type": "string", + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LAG" + }, + "forwarding_mode": { + "type": "string", + "title": "Forwarding Mode" + }, + "multicast_replication": { + "type": "object", + "properties": { + "default": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast Replication" + }, + "mdb_profile": { + "type": "string", + "description": "Sand platforms MDB Profile configuration. Note: l3-xxxl does not support MLAG.", + "enum": [ + "balanced", + "balanced-xl", + "l3", + "l3-xl", + "l3-xxl", + "l3-xxxl" + ], + "title": "MDB Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sand" + }, + "sfe": { + "type": "object", + "description": "Sfe (Software Forwarding Engine) settings.", + "properties": { + "data_plane_cpu_allocation_max": { + "type": "integer", + "description": "Maximum number of CPUs used for data plane traffic forwarding.", + "minimum": 1, + "maximum": 128, + "title": "Data Plane CPU Allocation Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sfe" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Platform" + }, + "poe": { + "type": "object", + "properties": { + "reboot": { + "type": "object", + "description": "Set the global PoE power behavior for PoE ports when the system is rebooted.", + "properties": { + "action": { + "type": "string", + "enum": [ + "power-off", + "maintain" + ], + "description": "PoE action for interface. By default in EOS, reboot action is set to power-off.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "interface_shutdown": { + "type": "object", + "description": "Set the global PoE power behavior for PoE ports when ports are admin down.", + "properties": { + "action": { + "type": "string", + "enum": [ + "power-off", + "maintain" + ], + "description": "PoE action for interface. By default in EOS, interface shutdown action is set to maintain.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "policy_maps": { + "type": "object", + "properties": { + "pbr": { + "type": "array", + "description": "PBR Policy-Maps.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy-Map Name.", + "title": "Name" + }, + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class Name.", + "title": "Name" + }, + "index": { + "type": "integer", + "title": "Index" + }, + "drop": { + "description": "'drop' and 'set' are mutually exclusive.", + "type": "boolean", + "title": "Drop" + }, + "set": { + "description": "Set Nexthop\n'drop' and 'set' are mutually exclusive.\n", + "type": "object", + "properties": { + "nexthop": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "description": "IPv4 or IPv6 Address.", + "title": "IP Address" + }, + "recursive": { + "type": "boolean", + "title": "Recursive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Nexthop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "PBR" + }, + "qos": { + "type": "array", + "description": "QOS Policy-Maps.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy-Map Name.", + "title": "Name" + }, + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Class Name.", + "title": "Name" + }, + "set": { + "type": "object", + "properties": { + "cos": { + "type": "integer", + "title": "COS" + }, + "dscp": { + "type": "string", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "title": "Traffic Class" + }, + "drop_precedence": { + "type": "integer", + "title": "Drop Precedence" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set" + }, + "police": { + "type": "object", + "properties": { + "rate": { + "type": "integer", + "description": "Specify rate.\nRange in kbps <8-200000000>.", + "title": "Rate" + }, + "rate_unit": { + "type": "string", + "enum": [ + "bps", + "kbps", + "mbps", + "pps" + ], + "default": "bps", + "title": "Rate Unit" + }, + "rate_burst_size": { + "type": "integer", + "description": "Range in bytes <256-128000000>.", + "title": "Rate Burst Size" + }, + "rate_burst_size_unit": { + "type": "string", + "enum": [ + "bytes", + "kbytes", + "mbytes", + "packets" + ], + "default": "bytes", + "title": "Rate Burst Size Unit" + }, + "action": { + "type": "object", + "properties": { + "type": { + "description": "Set action for policed traffic.", + "type": "string", + "enum": [ + "dscp", + "drop-precedence" + ], + "title": "Type" + }, + "dscp_value": { + "description": "Set when action.type is set to \"dscp\".", + "type": "string", + "title": "DSCP Value" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Action" + }, + "higher_rate": { + "type": "integer", + "description": "Specify higher rate.\nRange in kbps .", + "title": "Higher Rate" + }, + "higher_rate_unit": { + "type": "string", + "enum": [ + "bps", + "kbps", + "mbps", + "pps" + ], + "default": "bps", + "title": "Higher Rate Unit" + }, + "higher_rate_burst_size": { + "type": "integer", + "description": "Range in bytes <256-128000000>.", + "title": "Higher Rate Burst Size" + }, + "higher_rate_burst_size_unit": { + "type": "string", + "enum": [ + "bytes", + "kbytes", + "mbytes", + "packets" + ], + "default": "bytes", + "title": "Higher Rate Burst Size Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Police" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS" + }, + "copp_system_policy": { + "type": "object", + "description": "Control-plane policy configuration.", + "properties": { + "classes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "shape": { + "type": "integer", + "description": "Maximum rate limit.", + "minimum": 0, + "maximum": 10000000, + "title": "Shape" + }, + "bandwidth": { + "type": "integer", + "description": "Minimum bandwidth.", + "minimum": 0, + "maximum": 10000000, + "title": "Bandwidth" + }, + "rate_unit": { + "type": "string", + "description": "The `rate_unit` must be defined for `shape` and `bandwidth`.", + "enum": [ + "pps", + "kbps" + ], + "title": "Rate Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Classes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Copp System Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Policy Maps" + }, + "port_channel_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulation are all optional, and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "native_vlan": { + "type": "integer", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "mlag": { + "type": "integer", + "description": "MLAG ID.", + "minimum": 1, + "maximum": 2000, + "title": "MLAG" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "lacp_fallback_timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "default": 90, + "minimum": 0, + "maximum": 300, + "title": "LACP Fallback Timeout" + }, + "lacp_fallback_mode": { + "type": "string", + "enum": [ + "individual", + "static" + ], + "title": "LACP Fallback Mode" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "neighbor": { + "type": "string", + "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", + "title": "Neighbor" + }, + "per_link": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rfc_7130": { + "type": "boolean", + "title": "Rfc 7130" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Per Link" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "default": false, + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "esi": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", + "deprecated": true, + "title": "Esi" + }, + "rt": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", + "deprecated": true, + "title": "Rt" + }, + "lacp_id": { + "type": "string", + "description": "LACP ID with format xxxx.xxxx.xxxx.", + "title": "LACP ID" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + }, + "mpass": { + "type": "boolean", + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "Mpass" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 address/mask.", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Port Channel Interfaces" + }, + "prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Prefix-list Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"permit 10.255.0.0/27 eq 32\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Prefix Lists" + }, + "priority_flow_control": { + "type": "object", + "description": "Global Priority Flow Control settings.\n", + "properties": { + "all_off": { + "type": "boolean", + "description": "Disable PFC on all interfaces.\n", + "title": "All Off" + }, + "watchdog": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "drop", + "no-drop" + ], + "description": "Action on stuck queue.\n", + "title": "Action" + }, + "timeout": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Timeout" + }, + "polling_interval": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,3})?$", + "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point.\nExample: 0.005 or 60\n", + "title": "Polling Interval" + }, + "recovery_time": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Recovery Time" + }, + "override_action_drop": { + "type": "boolean", + "description": "Override configured action on stuck queue to drop.\n", + "title": "Override Action Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Watchdog" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "prompt": { + "type": "string", + "title": "Prompt" + }, + "ptp": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "boundary", + "disabled", + "e2etransparent", + "gptp", + "ordinarymaster", + "p2ptransparent" + ], + "title": "Mode" + }, + "profile": { + "type": "string", + "enum": [ + "g8275.1", + "g8275.2" + ], + "title": "Profile" + }, + "mode_one_step": { + "type": "boolean", + "title": "Mode One Step" + }, + "forward_unicast": { + "type": "boolean", + "title": "Forward Unicast" + }, + "clock_identity": { + "type": "string", + "description": "The clock-id in xx:xx:xx:xx:xx:xx format.", + "title": "Clock Identity" + }, + "source": { + "type": "object", + "properties": { + "ip": { + "description": "Source IP.", + "type": "string", + "title": "IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "priority1": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority1" + }, + "priority2": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority2" + }, + "ttl": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "TTL" + }, + "domain": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Domain" + }, + "message_type": { + "type": "object", + "properties": { + "general": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "General" + }, + "event": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Message Type" + }, + "monitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "threshold": { + "type": "object", + "properties": { + "offset_from_master": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Offset From Master" + }, + "mean_path_delay": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Mean Path Delay" + }, + "drop": { + "type": "object", + "properties": { + "offset_from_master": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Offset From Master" + }, + "mean_path_delay": { + "type": "integer", + "minimum": 0, + "maximum": 1000000000, + "title": "Mean Path Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + }, + "missing_message": { + "type": "object", + "properties": { + "intervals": { + "type": "object", + "properties": { + "announce": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Announce" + }, + "follow_up": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Follow Up" + }, + "sync": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Intervals" + }, + "sequence_ids": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "announce": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Announce" + }, + "delay_resp": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Delay Resp" + }, + "follow_up": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Follow Up" + }, + "sync": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sequence IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Message" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Monitor" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "qos": { + "type": "object", + "properties": { + "map": { + "type": "object", + "properties": { + "cos": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"0 1 to traffic-class 1\"\n" + }, + "title": "COS" + }, + "dscp": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"8 9 10 to traffic-class 1\"\n" + }, + "title": "DSCP" + }, + "exp": { + "type": "array", + "items": { + "type": "string", + "description": "Example \"0 to traffic-class 0\"\n" + }, + "title": "EXP" + }, + "traffic_class": { + "type": "array", + "items": { + "type": "string", + "description": "Example: \"1 to dscp 32\"\n" + }, + "title": "Traffic Class" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Map" + }, + "rewrite_dscp": { + "type": "boolean", + "title": "Rewrite DSCP" + }, + "random_detect": { + "type": "object", + "description": "Global random-detect settings.", + "properties": { + "ecn": { + "type": "object", + "description": "Global ECN Configuration.", + "properties": { + "allow_non_ect": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Allow non-ect and set drop-precedence 1 in a policy map simultaneously.\nCheck which command is required for your platform.", + "title": "Enabled" + }, + "chip_based": { + "type": "boolean", + "description": "Allow non-ect chip-based.", + "title": "Chip Based" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allow Non Ect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "qos_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Profile-Name.", + "title": "Name" + }, + "trust": { + "type": "string", + "enum": [ + "cos", + "dscp", + "disabled" + ], + "title": "Trust" + }, + "cos": { + "type": "integer", + "title": "COS" + }, + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "service_policy": { + "type": "object", + "properties": { + "type": { + "type": "object", + "properties": { + "qos_input": { + "type": "string", + "description": "Policy-map name.", + "title": "QOS Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.", + "title": "Comment" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Units to be used for the threshold values.\nThis should be one of segments, byte, kbytes, mbytes.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Random-detect ECN maximum mark probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + }, + "drop": { + "description": "Set WRED parameters.", + "type": "object", + "properties": { + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "microseconds", + "milliseconds" + ], + "description": "Units to be used for the threshold values.", + "title": "Units" + }, + "drop_precedence": { + "type": "integer", + "minimum": 0, + "maximum": 2, + "description": "Specify Drop Precedence value.", + "title": "Drop Precedence" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "WRED minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "WRED maximum-threshold.", + "title": "Max" + }, + "drop_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "WRED drop probability.", + "title": "Drop Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "WRED weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max", + "drop_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "TX Queues" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "UC TX queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.", + "title": "Comment" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Unit to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "Random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Random-detect ECN maximum mark probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + }, + "drop": { + "description": "Set WRED parameters.", + "type": "object", + "properties": { + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "microseconds", + "milliseconds" + ], + "description": "Units to be used for the threshold values.", + "title": "Units" + }, + "drop_precedence": { + "type": "integer", + "minimum": 0, + "maximum": 2, + "description": "Specify Drop Precedence value.", + "title": "Drop Precedence" + }, + "min": { + "type": "integer", + "minimum": 1, + "description": "WRED minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "description": "WRED maximum-threshold.", + "title": "Max" + }, + "drop_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "WRED drop probability.", + "title": "Drop Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "WRED weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max", + "drop_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Uc TX Queues" + }, + "mc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "MC TX queue ID.", + "title": "ID" + }, + "bandwidth_percent": { + "type": "integer", + "title": "Bandwidth Percent" + }, + "bandwidth_guaranteed_percent": { + "type": "integer", + "title": "Bandwidth Guaranteed Percent" + }, + "priority": { + "type": "string", + "enum": [ + "priority strict", + "no priority" + ], + "title": "Priority" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "comment": { + "type": "string", + "description": "Text comment added to queue.\n", + "title": "Comment" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Mc TX Queues" + }, + "priority_flow_control": { + "type": "object", + "description": "Priority Flow Control settings.\n", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable Priority Flow control.\n", + "title": "Enabled" + }, + "watchdog": { + "type": "object", + "description": "Watchdog can detect stuck transmit queues.\n", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable the watchdog on stuck transmit queues.\n", + "title": "Enabled" + }, + "action": { + "type": "string", + "enum": [ + "drop", + "notify-only" + ], + "description": "Override the default error-disable action to either drop\ntraffic on the stuck queue or notify-only\nwithout making any actions on the stuck queue.\n", + "title": "Action" + }, + "timer": { + "type": "object", + "description": "Timer thresholds whilst monitoring queues.\n", + "properties": { + "timeout": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Timeout" + }, + "polling_interval": { + "type": "string", + "pattern": "^auto|\\d+(\\.\\d{1,3})?$", + "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point or set\nto 'auto' based on recovery_time and timeout values.\nExample: 0.005 or 60\n", + "title": "Polling Interval" + }, + "recovery_time": { + "type": "string", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", + "title": "Recovery Time" + }, + "forced": { + "type": "boolean", + "description": "Force recover any stuck queue(s) after the duration,\nirrespective of whether PFC frames are being\nreceived or not.\n", + "title": "Forced" + } + }, + "required": [ + "timeout", + "polling_interval", + "recovery_time" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timer" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Watchdog" + }, + "priorities": { + "type": "array", + "description": "Set the drop/no_drop on each queue.\n", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Priority queue number (COS value).\n", + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "description": "Enable Priority Flow Control frames on this queue.\n", + "title": "No Drop" + } + }, + "required": [ + "priority", + "no_drop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "QOS Profiles" + }, + "queue_monitor_length": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default_thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "description": "Default high threshold for Ethernet Interfaces.\n", + "title": "High" + }, + "low": { + "type": "integer", + "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Thresholds" + }, + "log": { + "type": "integer", + "description": "Logging interval in seconds.", + "title": "Log" + }, + "notifying": { + "type": "boolean", + "description": "Should only be used for platforms supporting the \"queue-monitor length notifying\" CLI.", + "title": "Notifying" + }, + "cpu": { + "type": "object", + "properties": { + "thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "title": "High" + }, + "low": { + "type": "integer", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Thresholds" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CPU" + }, + "tx_latency": { + "type": "boolean", + "description": "Enable tx-latency mode.", + "title": "TX Latency" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Queue Monitor Length" + }, + "queue_monitor_streaming": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "ip_access_group": { + "type": "string", + "description": "Name of IP ACL.", + "title": "IP Access Group" + }, + "ipv6_access_group": { + "type": "string", + "description": "Name of IPv6 ACL.", + "title": "IPv6 Access Group" + }, + "max_connections": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "title": "Max Connections" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Queue Monitor Streaming" + }, + "radius_server": { + "type": "object", + "properties": { + "attribute_32_include_in_access_req": { + "type": "object", + "properties": { + "hostname": { + "type": "boolean", + "title": "Hostname" + }, + "format": { + "type": "string", + "description": "Specify the format of the NAS-Identifier. If 'hostname' is set, this is ignored.", + "title": "Format" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Attribute 32 Include In Access Req" + }, + "dynamic_authorization": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "TCP Port.", + "title": "Port" + }, + "tls_ssl_profile": { + "type": "string", + "description": "Name of TLS profile.", + "title": "TLS SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic Authorization" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "tls": { + "type": "object", + "description": "When TLS is configured, `key` is ignored..", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable TLS for radius-server.", + "title": "Enabled" + }, + "ssl_profile": { + "type": "string", + "description": "Name of TLS profile.", + "title": "SSL Profile" + }, + "port": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "TCP Port used for TLS. EOS default is 2083.", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TLS" + }, + "timeout": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + }, + "retransmit": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "title": "Retransmit" + }, + "key": { + "type": "string", + "description": "Encrypted key - only type 7 supported.\nWhen TLS is configured, `key` is ignored.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "host" + ] + }, + "title": "Hosts" + }, + "tls_ssl_profile": { + "type": "string", + "description": "Name of global TLS profile.", + "title": "TLS SSL Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Radius Server" + }, + "radius_servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "key": { + "type": "string", + "description": "Encrypted key.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Radius Servers" + }, + "redundancy": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "description": "Redundancy Protocol.", + "title": "Protocol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redundancy" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Role name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence number.", + "title": "Sequence" + }, + "action": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Action" + }, + "mode": { + "type": "string", + "description": "\"config\", \"config-all\", \"exec\" or mode key as string.\n", + "title": "Mode" + }, + "command": { + "type": "string", + "description": "Command as string.", + "title": "Command" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Roles" + }, + "route_maps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Route-map Name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "type": { + "type": "string", + "enum": [ + "permit", + "deny" + ], + "title": "Type" + }, + "description": { + "type": "string", + "title": "Description" + }, + "match": { + "type": "array", + "description": "List of \"match\" statements.", + "items": { + "type": "string", + "description": "Match as string.\nExample: \"ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY\"\n" + }, + "title": "Match" + }, + "set": { + "type": "array", + "description": "List of \"set\" statements.", + "items": { + "type": "string", + "description": "Set as string.\nExample: \"origin incomplete\"\n" + }, + "title": "Set" + }, + "sub_route_map": { + "type": "string", + "description": "Name of Sub-Route-map.", + "title": "Sub Route Map" + }, + "continue": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "sequence_number": { + "type": "integer", + "title": "Sequence Number" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Continue" + } + }, + "required": [ + "type", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Route Maps" + }, + "router_adaptive_virtual_topology": { + "type": "object", + "properties": { + "topology_role": { + "description": "Role name.", + "type": "string", + "enum": [ + "edge", + "pathfinder", + "transit region", + "transit zone" + ], + "title": "Topology Role" + }, + "region": { + "type": "object", + "description": "Region name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Region" + }, + "zone": { + "type": "object", + "description": "Zone name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Zone" + }, + "site": { + "type": "object", + "description": "Site name and ID.", + "properties": { + "name": { + "type": "string", + "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 1, + "maximum": 10000, + "title": "ID" + } + }, + "required": [ + "name", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Site" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "AVT Name.", + "title": "Name" + }, + "load_balance_policy": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance Policy" + }, + "internet_exit_policy": { + "type": "string", + "description": "Name of the internet exit policy.", + "title": "Internet Exit Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + }, + "policies": { + "type": "array", + "description": "A sequence of application profiles mapped to some virtual topologies.\n\nWhen `wan_mode` is set to `autovpn`, the rules are indexed using 10* in the list.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "matches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "application_profile": { + "type": "string", + "description": "Application profile name.", + "title": "Application Profile" + }, + "avt_profile": { + "type": "string", + "description": "AVT Profile name.", + "title": "Avt Profile" + }, + "dscp": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "description": "Set DSCP for matched traffic.", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Set traffic-class for matched traffic.", + "title": "Traffic Class" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Matches" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "policy": { + "type": "string", + "description": "AVT Policy name.", + "title": "Policy" + }, + "profiles": { + "type": "array", + "description": "AVT profiles in this VRF.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "AVT profile name.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Unique ID for this AVT (per VRF).", + "minimum": 1, + "maximum": 254, + "title": "ID" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Adaptive Virtual Topology" + }, + "router_bfd": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "local_address": { + "type": "string", + "description": "Configure BFD local IP/IPv6 address.", + "title": "Local Address" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "multihop": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multihop" + }, + "session_snapshot_interval": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Interval in seconds.\nIntervals below 10 are considered \"dangerous\" on EOS and must have `session_snapshot_interval_dangerous` set to `true`.", + "title": "Session Snapshot Interval" + }, + "session_snapshot_interval_dangerous": { + "type": "boolean", + "title": "Session Snapshot Interval Dangerous" + }, + "sbfd": { + "type": "object", + "properties": { + "local_interface": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface Name.", + "title": "Name" + }, + "protocols": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Protocols" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Interface" + }, + "initiator_interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Initiator Interval" + }, + "initiator_multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Initiator Multiplier" + }, + "initiator_measurement_round_trip": { + "type": "boolean", + "description": "Enable round-trip delay measurement.", + "title": "Initiator Measurement Round Trip" + }, + "reflector": { + "type": "object", + "properties": { + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "local_discriminator": { + "type": "string", + "description": "IPv4 address or 32 bit integer.", + "title": "Local Discriminator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reflector" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SBFD" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router BFD" + }, + "router_bgp": { + "type": "object", + "properties": { + "as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "As" + }, + "as_notation": { + "title": "ASN Notation", + "type": "string", + "description": "BGP AS can be deplayed in the asplain <1-4294967295> or asdot notation \"<1-65535>.<0-65535>\". This flag indicates which mode is preferred - asplain is the default.", + "enum": [ + "asdot", + "asplain" + ] + }, + "router_id": { + "type": "string", + "description": "In IP address format A.B.C.D.", + "title": "Router ID" + }, + "distance": { + "type": "object", + "properties": { + "external_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "External Routes" + }, + "internal_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Internal Routes" + }, + "local_routes": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Local Routes" + } + }, + "required": [ + "external_routes", + "internal_routes", + "local_routes" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distance" + }, + "graceful_restart": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_time": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Number of seconds.", + "title": "Restart Time" + }, + "stalepath_time": { + "type": "integer", + "minimum": 1, + "maximum": 3600, + "description": "Number of seconds.", + "title": "Stalepath Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart" + }, + "graceful_restart_helper": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_time": { + "type": "integer", + "minimum": 1, + "maximum": 100000000, + "description": "Number of seconds\ngraceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", + "title": "Restart Time" + }, + "long_lived": { + "type": "boolean", + "description": "graceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", + "title": "Long Lived" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart Helper" + }, + "maximum_paths": { + "type": "object", + "properties": { + "paths": { + "type": "integer", + "minimum": 1, + "maximum": 600, + "title": "Paths" + }, + "ecmp": { + "type": "integer", + "minimum": 1, + "maximum": 600, + "title": "ECMP" + } + }, + "required": [ + "paths" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Maximum Paths" + }, + "updates": { + "type": "object", + "properties": { + "wait_for_convergence": { + "type": "boolean", + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", + "title": "Wait For Convergence" + }, + "wait_install": { + "type": "boolean", + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", + "title": "Wait Install" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Updates" + }, + "bgp_cluster_id": { + "type": "string", + "description": "IP Address A.B.C.D.", + "title": "BGP Cluster ID" + }, + "bgp_defaults": { + "type": "array", + "description": "BGP command as string.", + "items": { + "type": "string" + }, + "title": "BGP Defaults" + }, + "bgp": { + "type": "object", + "properties": { + "default": { + "type": "object", + "properties": { + "ipv4_unicast": { + "type": "boolean", + "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors (EOS default = True).", + "title": "IPv4 Unicast" + }, + "ipv4_unicast_transport_ipv6": { + "type": "boolean", + "description": "Default activation of IPv4 unicast address-family on all IPv6 neighbors (EOS default == False).", + "title": "IPv4 Unicast Transport IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "route_reflector_preserve_attributes": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Reflector Preserve Attributes" + }, + "bestpath": { + "type": "object", + "properties": { + "d_path": { + "type": "boolean", + "title": "D Path" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Bestpath" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "listen_ranges": { + "type": "array", + "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "peer_id_include_router_id": { + "type": "boolean", + "description": "Include router ID as part of peer filter.", + "title": "Peer ID Include Router ID" + }, + "peer_group": { + "type": "string", + "description": "Peer group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `peer_filter` or `remote_as` is required but mutually exclusive.\nIf both are defined, `peer_filter` takes precedence\n", + "title": "Peer Filter" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Listen Ranges" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "Peer Filter" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "update_source": { + "type": "string", + "description": "IP address or interface name.", + "title": "Update Source" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "description": "Number of local ASNs allowed in a BGP update.", + "minimum": 1, + "maximum": 10, + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "bgp_listen_range_prefix": { + "type": "string", + "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", + "deprecated": true, + "title": "BGP Listen Range Prefix" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "peer_group": { + "type": "string", + "title": "Peer Group" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "description": { + "type": "string", + "title": "Description" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "update_source": { + "type": "string", + "description": "Source Interface.", + "title": "Update Source" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "description": "Maximum number of routes (0 means unlimited).", + "minimum": 0, + "maximum": 4294967294, + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "missing_policy": { + "type": "object", + "description": "Missing policy configuration for all address-families.", + "properties": { + "direction_in": { + "description": "Missing policy inbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction In" + }, + "direction_out": { + "description": "Missing policy outbound direction.", + "type": "object", + "properties": { + "action": { + "description": "Missing policy action.", + "type": "string", + "enum": [ + "deny", + "permit", + "deny-in-out" + ], + "title": "Action" + }, + "include_community_list": { + "type": "boolean", + "description": "Include community-list references in missing policy decision.", + "title": "Include Community List" + }, + "include_prefix_list": { + "type": "boolean", + "description": "Include prefix-list references in missing policy decision.", + "title": "Include Prefix List" + }, + "include_sub_route_map": { + "type": "boolean", + "description": "Include sub-route-map references in missing policy decision.", + "title": "Include Sub Route Map" + } + }, + "required": [ + "action" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Direction Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "description": "Number of local ASNs allowed in a BGP update.", + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "link_bandwidth": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "default": { + "type": "string", + "description": "nn.nn(K|M|G) link speed in bits/second.", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Bandwidth" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "session_tracker": { + "type": "string", + "title": "Session Tracker" + }, + "shared_secret": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Name of profile defined under `management_security`.", + "title": "Profile" + }, + "hash_algorithm": { + "type": "string", + "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", + "enum": [ + "aes-128-cmac-96", + "hmac-sha-256", + "hmac-sha1-96" + ], + "title": "Hash Algorithm" + } + }, + "required": [ + "profile", + "hash_algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "ttl_maximum_hops": { + "type": "integer", + "minimum": 0, + "maximum": 254, + "description": "Maximum number of hops.", + "title": "TTL Maximum Hops" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_group": { + "type": "string", + "default": "Peer-group name", + "title": "Peer Group" + }, + "description": { + "type": "string", + "title": "Description" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.", + "title": "Peer Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Neighbor Interfaces" + }, + "aggregate_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "advertise_only": { + "type": "boolean", + "title": "Advertise Only" + }, + "as_set": { + "type": "boolean", + "title": "As Set" + }, + "summary_only": { + "type": "boolean", + "title": "Summary Only" + }, + "attribute_map": { + "type": "string", + "description": "Route-map name.", + "title": "Attribute Map" + }, + "match_map": { + "type": "string", + "description": "Route-map name.", + "title": "Match Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Aggregate Addresses" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + }, + "vlan_aware_bundles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VLAN aware bundle name.", + "title": "Name" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "description": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Description" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + }, + "vlan": { + "type": "string", + "description": "VLAN range as string. Example \"100-200,300\".", + "title": "VLAN" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN-aware-bundle definition in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VLAN Aware Bundles" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", + "title": "EOS CLI" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vpws": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VPWS instance name.", + "title": "Name" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "route_targets": { + "type": "object", + "properties": { + "import_export": { + "type": "string", + "description": "Route Target.", + "title": "Import Export" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "mpls_control_word": { + "type": "boolean", + "title": "MPLS Control Word" + }, + "label_flow": { + "type": "boolean", + "title": "Label Flow" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "pseudowires": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Pseudowire name.", + "title": "Name" + }, + "id_local": { + "type": "integer", + "description": "Must match id_remote on other pe.", + "title": "ID Local" + }, + "id_remote": { + "type": "integer", + "description": "Must match id_local on other pe.", + "title": "ID Remote" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Pseudowires" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Vpws" + }, + "address_family_evpn": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "neighbor_default": { + "type": "object", + "properties": { + "encapsulation": { + "type": "string", + "enum": [ + "vxlan", + "mpls" + ], + "title": "Encapsulation" + }, + "next_hop_self_source_interface": { + "description": "Source interface name.", + "type": "string", + "title": "Next Hop Self Source Interface" + }, + "next_hop_self_received_evpn_routes": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "inter_domain": { + "type": "boolean", + "title": "Inter Domain" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop Self Received EVPN Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default" + }, + "next_hop_mpls_resolution_ribs": { + "type": "array", + "minItems": 1, + "maxItems": 3, + "description": "Specify the RIBs used to resolve MPLS next-hops. The order of this list determines the order of RIB lookups.", + "items": { + "type": "object", + "properties": { + "rib_type": { + "type": "string", + "enum": [ + "system-connected", + "tunnel-rib-colored", + "tunnel-rib" + ], + "description": "Type of RIB. For 'tunnel-rib', use 'rib_name' to specify the name of the Tunnel-RIB to use.", + "title": "Rib Type" + }, + "rib_name": { + "type": "string", + "description": "The name of the tunnel-rib to use when using 'tunnel-rib' type.", + "title": "Rib Name" + } + }, + "required": [ + "rib_type" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Next Hop MPLS Resolution Ribs" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + }, + "domain_remote": { + "type": "boolean", + "title": "Domain Remote" + }, + "encapsulation": { + "type": "string", + "enum": [ + "vxlan", + "mpls" + ], + "title": "Encapsulation" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "evpn_hostflap_detection": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "window": { + "type": "integer", + "description": "Time (in seconds) to detect a MAC duplication issue.", + "minimum": 0, + "maximum": 4294967295, + "title": "Window" + }, + "threshold": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "Minimum number of MAC moves that indicate a MAC Duplication issue.", + "title": "Threshold" + }, + "expiry_timeout": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "description": "Time (in seconds) to purge a MAC duplication issue.", + "title": "Expiry Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Hostflap Detection" + }, + "next_hop": { + "type": "object", + "properties": { + "resolution_disabled": { + "type": "boolean", + "title": "Resolution Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + }, + "import_ethernet_segment_ip_mass_withdraw": { + "type": "boolean", + "title": "Import Ethernet Segment IP Mass Withdraw" + }, + "import_overlay_index_gateway": { + "type": "boolean", + "title": "Import Overlay Index Gateway" + }, + "export_ethernet_segment_ip_mass_withdraw": { + "type": "boolean", + "title": "Export Ethernet Segment IP Mass Withdraw" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "next_hop_unchanged": { + "type": "boolean", + "title": "Next Hop Unchanged" + }, + "bgp_additional_paths": { + "type": "object", + "description": "BGP additional-paths commands.", + "properties": { + "receive": { + "type": "boolean", + "description": "Receive multiple paths.", + "title": "Receive" + }, + "send": { + "type": "object", + "description": "Send multiple paths.", + "properties": { + "any": { + "type": "boolean", + "description": "Any eligible path.", + "title": "Any" + }, + "backup": { + "type": "boolean", + "description": "Best path and installed backup path.", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "description": "All paths in best path ECMP group.", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP Additional Paths" + }, + "layer_2_fec_in_place_update": { + "type": "object", + "description": "BGP layer-2 in-place FEC operation.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "description": "In-place FEC update tracking timeout in seconds.", + "minimum": 0, + "maximum": 300, + "title": "Timeout" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Layer 2 Fec In Place Update" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family EVPN" + }, + "address_family_rtc": { + "type": "object", + "properties": { + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "default_route_target": { + "type": "object", + "properties": { + "only": { + "type": "boolean", + "title": "Only" + }, + "encoding_origin_as_omit": { + "type": "string", + "title": "Encoding Origin As Omit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Rtc" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "type": "string", + "title": "Prefix" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "originate": { + "type": "boolean", + "title": "Originate" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv6_originate": { + "type": "boolean", + "title": "Address Family IPv6 Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Prefix-list name.", + "title": "Prefix List Out" + }, + "default_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv4_multicast": { + "type": "object", + "properties": { + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Multicast" + }, + "address_family_ipv4_sr_te": { + "type": "object", + "properties": { + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Sr Te" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "type": "string", + "title": "Prefix" + }, + "route_map": { + "description": "Route-map name.", + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly used if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv6_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Multicast" + }, + "address_family_ipv6_sr_te": { + "type": "object", + "properties": { + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Sr Te" + }, + "address_family_link_state": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "path_selection": { + "type": "object", + "properties": { + "roles": { + "type": "object", + "properties": { + "producer": { + "type": "boolean", + "title": "Producer" + }, + "consumer": { + "type": "boolean", + "title": "Consumer" + }, + "propagator": { + "type": "boolean", + "title": "Propagator" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Roles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Path Selection" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Link State" + }, + "address_family_flow_spec_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv4" + }, + "address_family_flow_spec_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv6" + }, + "address_family_path_selection": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Path Selection" + }, + "address_family_vpn_ipv4": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_default_encapsulation_mpls_next_hop_self": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default Encapsulation MPLS Next Hop Self" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family VPN IPv4" + }, + "address_family_vpn_ipv6": { + "type": "object", + "properties": { + "domain_identifier": { + "type": "string", + "title": "Domain Identifier" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "route": { + "type": "object", + "properties": { + "import_match_failure_action": { + "type": "string", + "enum": [ + "discard" + ], + "title": "Import Match Failure Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "default_route": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Route" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_default_encapsulation_mpls_next_hop_self": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Neighbor Default Encapsulation MPLS Next Hop Self" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family VPN IPv6" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "bgp": { + "type": "object", + "properties": { + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + }, + "evpn_multicast": { + "type": "boolean", + "title": "EVPN Multicast" + }, + "evpn_multicast_address_family": { + "type": "object", + "description": "Enable per-AF EVPN multicast settings.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "transit": { + "type": "boolean", + "description": "Enable EVPN multicast transit mode.", + "title": "Transit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Multicast Address Family" + }, + "evpn_multicast_gateway_dr_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "description": "DR election algorithms:\n hrw: Default selection based on highest random weight.\n modulus: Selection based on VLAN ID modulo number of candidates.\n preference: Selection based on a configured preference value.", + "enum": [ + "hrw", + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "description": "Required when `algorithm` is `preference`.", + "minimum": 0, + "maximum": 65535, + "title": "Preference Value" + } + }, + "required": [ + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Multicast Gateway DR Election" + }, + "default_route_exports": { + "type": "array", + "description": "Enable default-originate per VRF/address-family.", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "enum": [ + "evpn", + "vpn-ipv4", + "vpn-ipv6" + ], + "title": "Address Family" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Default Route Exports" + }, + "route_targets": { + "type": "object", + "properties": { + "import": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "route_targets": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Route Targets" + }, + "route_map": { + "type": "string", + "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "RCF" + }, + "vpn_route_filter_rcf": { + "type": "string", + "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", + "title": "VPN Route Filter RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "route_targets": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Route Targets" + }, + "route_map": { + "type": "string", + "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "Route Map" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", + "title": "RCF" + }, + "vpn_route_filter_rcf": { + "type": "string", + "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", + "title": "VPN Route Filter RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Export" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "router_id": { + "description": "in IP address format A.B.C.D.", + "type": "string", + "title": "Router ID" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "updates": { + "type": "object", + "properties": { + "wait_for_convergence": { + "type": "boolean", + "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", + "title": "Wait For Convergence" + }, + "wait_install": { + "type": "boolean", + "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", + "title": "Wait Install" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Updates" + }, + "listen_ranges": { + "type": "array", + "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "peer_id_include_router_id": { + "type": "boolean", + "description": "Include router ID as part of peer filter.", + "title": "Peer ID Include Router ID" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.\nnote: `peer_filter`` or `remote_as` is required but mutually exclusive.\nIf both are defined, peer_filter takes precedence.\n", + "title": "Peer Filter" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Listen Ranges" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "password": { + "type": "string", + "title": "Password" + }, + "passive": { + "type": "boolean", + "title": "Passive" + }, + "remove_private_as": { + "type": "object", + "description": "Remove private AS numbers in outbound AS path.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As" + }, + "remove_private_as_ingress": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "replace_as": { + "type": "boolean", + "title": "Replace As" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Remove Private As Ingress" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Weight" + }, + "local_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Local As" + }, + "as_path": { + "type": "object", + "description": "BGP AS-PATH options.", + "properties": { + "remote_as_replace_out": { + "type": "boolean", + "description": "Replace AS number with local AS number.", + "title": "Remote As Replace Out" + }, + "prepend_own_disabled": { + "type": "boolean", + "description": "Disable prepending own AS number to AS path.", + "title": "Prepend Own Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "As Path" + }, + "description": { + "type": "string", + "title": "Description" + }, + "route_reflector_client": { + "type": "boolean", + "title": "Route Reflector Client" + }, + "ebgp_multihop": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Time-to-live in range of hops.", + "title": "Ebgp Multihop" + }, + "next_hop_self": { + "type": "boolean", + "title": "Next Hop Self" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "bfd": { + "type": "boolean", + "description": "Enable BFD.", + "title": "BFD" + }, + "bfd_timers": { + "type": "object", + "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", + "properties": { + "interval": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "minimum": 50, + "maximum": 60000, + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "required": [ + "interval", + "min_rx", + "multiplier" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Timers" + }, + "timers": { + "type": "string", + "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", + "title": "Timers" + }, + "rib_in_pre_policy_retain": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "all": { + "type": "boolean", + "title": "All" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rib In Pre Policy Retain" + }, + "send_community": { + "type": "string", + "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", + "title": "Send Community" + }, + "maximum_routes": { + "type": "integer", + "title": "Maximum Routes" + }, + "maximum_routes_warning_limit": { + "type": "string", + "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", + "title": "Maximum Routes Warning Limit" + }, + "maximum_routes_warning_only": { + "type": "boolean", + "title": "Maximum Routes Warning Only" + }, + "allowas_in": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "times": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "description": "Number of local ASNs allowed in a BGP update.", + "title": "Times" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Allowas In" + }, + "default_originate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Originate" + }, + "update_source": { + "type": "string", + "title": "Update Source" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_in or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_in instead.", + "deprecated": true, + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_out or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_out instead.", + "deprecated": true, + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "neighbor_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "remote_as": { + "type": "string", + "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", + "title": "Remote As" + }, + "peer_group": { + "type": "string", + "description": "Peer-group name.", + "title": "Peer Group" + }, + "peer_filter": { + "type": "string", + "description": "Peer-filter name.", + "title": "Peer Filter" + }, + "description": { + "type": "string", + "title": "Description" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Neighbor Interfaces" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + }, + "aggregate_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "advertise_only": { + "type": "boolean", + "title": "Advertise Only" + }, + "as_set": { + "type": "boolean", + "title": "As Set" + }, + "summary_only": { + "type": "boolean", + "title": "Summary Only" + }, + "attribute_map": { + "type": "string", + "title": "Attribute Map" + }, + "match_map": { + "type": "string", + "title": "Match Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Aggregate Addresses" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "originate": { + "type": "boolean", + "title": "Originate" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dynamic", + "isis", + "ospf", + "ospfv3", + "rip", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "install": { + "type": "boolean", + "title": "Install" + }, + "install_ecmp_primary": { + "type": "boolean", + "title": "Install ECMP Primary" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "send": { + "type": "object", + "properties": { + "any": { + "type": "boolean", + "title": "Any" + }, + "backup": { + "type": "boolean", + "title": "Backup" + }, + "ecmp": { + "type": "boolean", + "title": "ECMP" + }, + "ecmp_limit": { + "type": "integer", + "description": "Amount of ECMP paths to send.", + "minimum": 2, + "maximum": 64, + "title": "ECMP Limit" + }, + "limit": { + "type": "integer", + "description": "Amount of paths to send.", + "minimum": 2, + "maximum": 64, + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Send" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + }, + "redistribute_internal": { + "type": "boolean", + "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", + "title": "Redistribute Internal" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + }, + "rcf_in": { + "type": "string", + "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF In" + }, + "rcf_out": { + "type": "string", + "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", + "title": "RCF Out" + }, + "prefix_list_in": { + "type": "string", + "description": "Inbound prefix-list name.", + "title": "Prefix List In" + }, + "prefix_list_out": { + "type": "string", + "description": "Outbound prefix-list name.", + "title": "Prefix List Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "bgp", + "connected", + "dhcp", + "dynamic", + "isis", + "ospfv3", + "static", + "user" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "address_family_ipv4_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A.B.C.D/E\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "attached-host", + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4 Multicast" + }, + "address_family_ipv6_multicast": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "object", + "properties": { + "receive": { + "type": "boolean", + "title": "Receive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "description": "Only applicable if `source_protocol` is `isis`.", + "title": "Include Leaked" + }, + "rcf": { + "type": "string", + "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", + "title": "RCF" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external", + "nssa-external 1", + "nssa-external 2" + ], + "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", + "title": "OSPF Route Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source_protocol" + ] + }, + "title": "Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6 Multicast" + }, + "address_family_flow_spec_ipv4": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv4" + }, + "address_family_flow_spec_ipv6": { + "type": "object", + "properties": { + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family Flow Spec IPv6" + }, + "address_families": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "title": "Address Family" + }, + "bgp": { + "type": "object", + "properties": { + "missing_policy": { + "type": "object", + "properties": { + "direction_in_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction In Action" + }, + "direction_out_action": { + "type": "string", + "enum": [ + "deny", + "deny-in-out", + "permit" + ], + "title": "Direction Out Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Missing Policy" + }, + "additional_paths": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Additional Paths" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "neighbors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "route_map_in": { + "type": "string", + "description": "Inbound route-map name.", + "title": "Route Map In" + }, + "route_map_out": { + "type": "string", + "description": "Outbound route-map name.", + "title": "Route Map Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Neighbors" + }, + "peer_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Peer-group name.", + "title": "Name" + }, + "activate": { + "type": "boolean", + "title": "Activate" + }, + "next_hop": { + "type": "object", + "properties": { + "address_family_ipv6_originate": { + "type": "boolean", + "title": "Address Family IPv6 Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Next Hop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Peer Groups" + }, + "networks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", + "title": "Prefix" + }, + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Networks" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address_family" + ] + }, + "title": "Address Families" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "session_trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of session tracker.", + "title": "Name" + }, + "recovery_delay": { + "type": "integer", + "description": "Recovery delay in seconds.", + "minimum": 1, + "maximum": 3600, + "title": "Recovery Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Session Trackers" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router BGP" + }, + "router_general": { + "type": "object", + "title": "Router General configuration", + "properties": { + "router_id": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "description": "IPv4 Address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "IPv6 Address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ID" + }, + "nexthop_fast_failover": { + "type": "boolean", + "default": false, + "title": "Nexthop Fast Failover" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Destination-VRF.", + "title": "Name" + }, + "leak_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_vrf": { + "type": "string", + "title": "Source VRF" + }, + "subscribe_policy": { + "type": "string", + "description": "Route-Map Policy.", + "title": "Subscribe Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Leak Routes" + }, + "routes": { + "type": "object", + "properties": { + "dynamic_prefix_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Dynamic Prefix List Name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "control_functions": { + "type": "object", + "description": "Routing control functions (RCF) used to filter and update routes from a peer or during redistributions.\nWarning:\nThis configuration cannot be pushed with `eos_config_deploy_eapi`, because of limitations in `arista.eos` and `ansible.netcommon` plugins.\nThe configuration can be pushed via CloudVision with `eos_config_deploy_cvp` or `cv_deploy`.", + "properties": { + "code_units": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the code unit.", + "title": "Name" + }, + "content": { + "type": "string", + "description": "Content of route control function.\ne.g.\nfunction ACCEPT_ALL() {\n return true;\n }\nEOF", + "title": "Content" + } + }, + "required": [ + "content", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Code Units" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Functions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_igmp": { + "type": "object", + "title": "Router IGMP Configuration", + "properties": { + "host_proxy_match_mroute": { + "type": "string", + "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", + "enum": [ + "all", + "iif" + ], + "title": "Host Proxy Match Mroute" + }, + "ssm_aware": { + "type": "boolean", + "title": "Ssm Aware" + }, + "vrfs": { + "type": "array", + "description": "Configure IGMP in a VRF.\nVRF 'default' is not supported in EOS, please see keys directly under 'router_igmp'.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "host_proxy_match_mroute": { + "type": "string", + "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", + "enum": [ + "all", + "iif" + ], + "title": "Host Proxy Match Mroute" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_internet_exit": { + "type": "object", + "description": "Internet-exit feature to configure internet bound service for virtual topologies.", + "properties": { + "policies": { + "type": "array", + "description": "Internet-exit policy represent a policy which can be attached to a virtual topology profile.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "exit_groups": { + "type": "array", + "description": "The exit groups that are configured under a policy are strictly ordered, meaning an exit group appearing first has more priority than the exit group that follows it.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Exit Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "exit_groups": { + "type": "array", + "description": "Exit groups represent a group of exit options (connections).\nTraffic flows are load balanced in a round robin fashion across all the members (exits) of the exit-group.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "fib_default": { + "type": "boolean", + "description": "Fib default exit indicates that the flows that select this exit will follow the default route available in the VRF of the flow.", + "title": "Fib Default" + }, + "local_connections": { + "type": "array", + "description": "Local connections refer to connections configured under the `router_service_insertion`.\nThe service-insertion module reports the health of the connection and the exit will qualify for use only when it is healthy.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Local Connections" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Exit Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Internet Exit" + }, + "router_isis": { + "type": "object", + "properties": { + "instance": { + "type": "string", + "description": "ISIS Instance Name.", + "title": "Instance" + }, + "net": { + "type": "string", + "description": "CLNS Address like \"49.0001.0001.0000.0001.00\".", + "title": "Net" + }, + "router_id": { + "type": "string", + "description": "IPv4 Address.", + "title": "Router ID" + }, + "is_type": { + "title": "IS Type", + "type": "string", + "enum": [ + "level-1", + "level-1-2", + "level-2" + ] + }, + "log_adjacency_changes": { + "type": "boolean", + "title": "Log Adjacency Changes" + }, + "mpls_ldp_sync_default": { + "type": "boolean", + "title": "MPLS LDP Sync Default" + }, + "timers": { + "type": "object", + "properties": { + "local_convergence": { + "type": "object", + "properties": { + "protected_prefixes": { + "type": "boolean", + "title": "Protected Prefixes" + }, + "delay": { + "type": "integer", + "default": 10000, + "description": "Delay in milliseconds.", + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Local Convergence" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "set_overload_bit": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "on_startup": { + "type": "object", + "properties": { + "delay": { + "type": "integer", + "description": "Number of seconds.", + "title": "Delay" + }, + "wait_for_bgp": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "description": "Number of seconds.", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wait For BGP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "On Startup" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Set Overload Bit" + }, + "authentication": { + "type": "object", + "properties": { + "both": { + "type": "object", + "description": "Authentication settings for level-1 and level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Both" + }, + "level_1": { + "type": "object", + "description": "Authentication settings for level-1. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Level 1" + }, + "level_2": { + "type": "object", + "description": "Authentication settings for level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", + "properties": { + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type. Default key_id is 0.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "key_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "Configure authentication key-id.", + "title": "ID" + }, + "algorithm": { + "type": "string", + "enum": [ + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "description": "Configure authentication key type.", + "title": "Key Type" + }, + "key": { + "type": "string", + "description": "Password string.", + "title": "Key" + }, + "rfc_5310": { + "description": "SHA digest computation according to rfc5310.", + "type": "boolean", + "title": "Rfc 5310" + } + }, + "required": [ + "id", + "algorithm", + "key_type", + "key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Key IDs" + }, + "mode": { + "type": "string", + "description": "Authentication mode.", + "enum": [ + "md5", + "sha", + "text", + "shared_secret" + ], + "title": "Mode" + }, + "sha": { + "type": "object", + "description": "Required settings for authentication mode 'sha'.", + "properties": { + "key_id": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Key ID" + } + }, + "required": [ + "key_id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sha" + }, + "shared_secret": { + "type": "object", + "description": "Required settings for authentication mode 'shared_secret'.", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + }, + "algorithm": { + "type": "string", + "enum": [ + "md5", + "sha-1", + "sha-224", + "sha-256", + "sha-384", + "sha-512" + ], + "title": "Algorithm" + } + }, + "required": [ + "profile", + "algorithm" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shared Secret" + }, + "rx_disabled": { + "type": "boolean", + "title": "RX Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Level 2" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication" + }, + "advertise": { + "type": "object", + "properties": { + "passive_only": { + "type": "boolean", + "title": "Passive Only" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertise" + }, + "address_family": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "ipv4 unicast", + "ipv6 unicast" + ], + "description": "Address Family.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4.enabled or address_family_ipv6.enabled instead.", + "deprecated": true + }, + "title": "Address Family" + }, + "isis_af_defaults": { + "type": "array", + "items": { + "type": "string", + "description": "EOS CLI rendered under the address families.\nExample \"maximum-paths 64\"\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4/address_family_ipv6 instead.", + "deprecated": true + }, + "title": "ISIS AF Defaults" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_protocol": { + "type": "string", + "enum": [ + "bgp", + "connected", + "isis", + "ospf", + "ospfv3", + "static" + ], + "title": "Source Protocol" + }, + "route_map": { + "type": "string", + "description": "Route-map name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + }, + "ospf_route_type": { + "type": "string", + "enum": [ + "external", + "internal", + "nssa-external" + ], + "description": "ospf_route_type is required with source_protocols 'ospf' and 'ospfv3'.", + "title": "OSPF Route Type" + } + }, + "required": [ + "source_protocol" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Redistribute Routes" + }, + "address_family_ipv4": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, + "fast_reroute_ti_lfa": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "link-protection", + "node-protection" + ], + "title": "Mode" + }, + "level": { + "type": "string", + "enum": [ + "level-1", + "level-2" + ], + "title": "Level" + }, + "srlg": { + "type": "object", + "description": "Shared Risk Link Group.", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "strict": { + "type": "boolean", + "title": "Strict" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SRLG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fast Reroute TI LFA" + }, + "tunnel_source_labeled_unicast": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rcf": { + "type": "string", + "description": "Route Control Function.", + "title": "RCF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tunnel Source Labeled Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv4" + }, + "address_family_ipv6": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "bfd_all_interfaces": { + "type": "boolean", + "description": "Enable BFD on all interfaces.", + "title": "BFD All Interfaces" + }, + "fast_reroute_ti_lfa": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "link-protection", + "node-protection" + ], + "title": "Mode" + }, + "level": { + "type": "string", + "enum": [ + "level-1", + "level-2" + ], + "description": "Optional, default is to protect all levels.", + "title": "Level" + }, + "srlg": { + "type": "object", + "description": "Shared Risk Link Group.", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "strict": { + "type": "boolean", + "title": "Strict" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SRLG" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fast Reroute TI LFA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Family IPv6" + }, + "segment_routing_mpls": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "router_id": { + "type": "string", + "title": "Router ID" + }, + "prefix_segments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "title": "Prefix" + }, + "index": { + "type": "integer", + "title": "Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Prefix Segments" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Segment Routing MPLS" + }, + "spf_interval": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Maximum interval between two SPFs in seconds or milliseconds.\nRange in seconds: <1-300>\nRange in milliseconds: <1-300000>", + "title": "Interval" + }, + "interval_unit": { + "type": "string", + "enum": [ + "seconds", + "milliseconds" + ], + "description": "If interval unit is not defined EOS takes `seconds` by default.", + "title": "Interval Unit" + }, + "wait_interval": { + "type": "integer", + "minimum": 1, + "maximum": 300000, + "description": "Initial wait interval for SPF in milliseconds.", + "title": "Wait Interval" + }, + "hold_interval": { + "type": "integer", + "minimum": 1, + "maximum": 300000, + "description": "Hold interval between the first and second SPF runs in milliseconds.", + "title": "Hold Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SPF Interval" + }, + "graceful_restart": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "restart_hold_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Number of seconds.", + "title": "Restart Hold Time" + }, + "t2": { + "type": "object", + "properties": { + "level_1_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-1 LSP database sync wait time in seconds.", + "title": "Level 1 Wait Time" + }, + "level_2_wait_time": { + "type": "integer", + "minimum": 5, + "maximum": 300, + "description": "Level-2 LSP database sync wait time in seconds.", + "title": "Level 2 Wait Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "T2" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Graceful Restart" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the router isis in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "required": [ + "instance" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ISIS" + }, + "router_l2_vpn": { + "type": "object", + "properties": { + "arp_learning_bridged": { + "type": "boolean", + "title": "ARP Learning Bridged" + }, + "arp_proxy": { + "type": "object", + "properties": { + "prefix_list": { + "type": "string", + "description": "Prefix-list name. ARP Proxying is disabled for IPv4 addresses defined in the prefix-list.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ARP Proxy" + }, + "arp_selective_install": { + "type": "boolean", + "title": "ARP Selective Install" + }, + "nd_learning_bridged": { + "type": "boolean", + "title": "ND Learning Bridged" + }, + "nd_proxy": { + "type": "object", + "properties": { + "prefix_list": { + "type": "string", + "description": "Prefix-list name. Neighbor Discovery Proxying is disabled for IPv6 addresses defined in the prefix-list.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "ND Proxy" + }, + "nd_rs_flooding_disabled": { + "type": "boolean", + "title": "ND RS Flooding Disabled" + }, + "virtual_router_nd_ra_flooding_disabled": { + "type": "boolean", + "title": "Virtual Router ND RA Flooding Disabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router L2 VPN" + }, + "router_msdp": { + "type": "object", + "properties": { + "originator_id_local_interface": { + "type": "string", + "description": "Interface to use for originator ID.", + "title": "Originator ID Local Interface" + }, + "rejected_limit": { + "type": "integer", + "description": "Maximum number of rejected SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Rejected Limit" + }, + "forward_register_packets": { + "type": "boolean", + "title": "Forward Register Packets" + }, + "connection_retry_interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Connection Retry Interval" + }, + "group_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "type": "string", + "description": "Source address prefix.", + "title": "Source Prefix" + }, + "limit": { + "type": "integer", + "description": "Limit for SAs matching the source address prefix.", + "minimum": 0, + "maximum": 40000, + "title": "Limit" + } + }, + "required": [ + "limit", + "source_prefix" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Group Limits" + }, + "peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "Peer IP Address.", + "title": "IPv4 Address" + }, + "default_peer": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "prefix_list": { + "type": "string", + "description": "Prefix list to filter source of SA messages.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Peer" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "description": { + "type": "string", + "title": "Description" + }, + "disabled": { + "type": "boolean", + "description": "Disable the MSDP peer.", + "title": "Disabled" + }, + "sa_limit": { + "type": "integer", + "description": "Maximum number of SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Sa Limit" + }, + "mesh_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Mesh group name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Mesh Groups" + }, + "keepalive": { + "type": "object", + "properties": { + "keepalive_timer": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Keepalive Timer" + }, + "hold_timer": { + "type": "integer", + "description": "Must be greater than keepalive timer.", + "minimum": 1, + "maximum": 65535, + "title": "Hold Timer" + } + }, + "required": [ + "keepalive_timer", + "hold_timer" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + }, + "sa_filter": { + "type": "object", + "properties": { + "in_list": { + "type": "string", + "description": "ACL to filter inbound SA messages.", + "title": "In List" + }, + "out_list": { + "type": "string", + "description": "ACL to filter outbound SA messages.", + "title": "Out List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_address" + ] + }, + "title": "Peers" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "originator_id_local_interface": { + "type": "string", + "description": "Interface to use for originator ID.", + "title": "Originator ID Local Interface" + }, + "rejected_limit": { + "type": "integer", + "description": "Maximum number of rejected SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Rejected Limit" + }, + "forward_register_packets": { + "type": "boolean", + "title": "Forward Register Packets" + }, + "connection_retry_interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Connection Retry Interval" + }, + "group_limits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "type": "string", + "description": "Source address prefix.", + "title": "Source Prefix" + }, + "limit": { + "type": "integer", + "description": "Limit for SAs matching the source address prefix.", + "minimum": 0, + "maximum": 40000, + "title": "Limit" + } + }, + "required": [ + "limit", + "source_prefix" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Group Limits" + }, + "peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_address": { + "type": "string", + "description": "Peer IP Address.", + "title": "IPv4 Address" + }, + "default_peer": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "prefix_list": { + "type": "string", + "description": "Prefix list to filter source of SA messages.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Peer" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "description": { + "type": "string", + "title": "Description" + }, + "disabled": { + "type": "boolean", + "description": "Disable the MSDP peer.", + "title": "Disabled" + }, + "sa_limit": { + "type": "integer", + "description": "Maximum number of SA messages allowed in cache.", + "minimum": 0, + "maximum": 40000, + "title": "Sa Limit" + }, + "mesh_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Mesh group name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Mesh Groups" + }, + "keepalive": { + "type": "object", + "properties": { + "keepalive_timer": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Keepalive Timer" + }, + "hold_timer": { + "type": "integer", + "description": "Must be greater than keepalive timer.", + "minimum": 1, + "maximum": 65535, + "title": "Hold Timer" + } + }, + "required": [ + "keepalive_timer", + "hold_timer" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + }, + "sa_filter": { + "type": "object", + "properties": { + "in_list": { + "type": "string", + "description": "ACL to filter inbound SA messages.", + "title": "In List" + }, + "out_list": { + "type": "string", + "description": "ACL to filter outbound SA messages.", + "title": "Out List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sa Filter" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_address" + ] + }, + "title": "Peers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Msdp" + }, + "router_multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "activity_polling_interval": { + "type": "integer", + "minimum": 1, + "maximum": 60, + "description": "MFIB entry activity polling interval.", + "title": "Activity Polling Interval" + }, + "counters": { + "type": "object", + "properties": { + "rate_period_decay": { + "description": "Rate in seconds.", + "type": "integer", + "minimum": 0, + "maximum": 600, + "title": "Rate Period Decay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Counters" + }, + "routing": { + "type": "boolean", + "title": "Routing" + }, + "multipath": { + "type": "string", + "enum": [ + "none", + "deterministic", + "deterministic color", + "deterministic router-id" + ], + "title": "Multipath" + }, + "software_forwarding": { + "type": "string", + "enum": [ + "kernel", + "sfe" + ], + "title": "Software Forwarding" + }, + "rpf": { + "type": "object", + "properties": { + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source_prefix": { + "description": "Source address A.B.C.D or Source prefix A.B.C.D/E.", + "type": "string", + "title": "Source Prefix" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nexthop": { + "description": "Next-hop IP address or interface name.", + "type": "string", + "title": "Nexthop" + }, + "distance": { + "description": "Administrative distance for this route.", + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "nexthop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Destinations" + } + }, + "required": [ + "source_prefix", + "destinations" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rpf" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "activity_polling_interval": { + "type": "integer", + "minimum": 1, + "maximum": 60, + "description": "MFIB entry activity polling interval.", + "title": "Activity Polling Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "ipv4": { + "type": "object", + "properties": { + "routing": { + "type": "boolean", + "title": "Routing" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Multicast" + }, + "router_ospf": { + "type": "object", + "title": "Router OSPF Configuration", + "properties": { + "process_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "OSPF Process ID.", + "title": "ID" + }, + "vrf": { + "type": "string", + "description": "VRF Name for OSPF Process.", + "title": "VRF" + }, + "passive_interface_default": { + "type": "boolean", + "title": "Passive Interface Default" + }, + "router_id": { + "type": "string", + "description": "IPv4 Address.", + "title": "Router ID" + }, + "distance": { + "type": "object", + "properties": { + "external": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "External" + }, + "inter_area": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Inter Area" + }, + "intra_area": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Intra Area" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distance" + }, + "log_adjacency_changes_detail": { + "type": "boolean", + "title": "Log Adjacency Changes Detail" + }, + "network_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv4_prefix": { + "type": "string", + "title": "IPv4 Prefix" + }, + "area": { + "type": "string", + "title": "Area" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv4_prefix" + ] + }, + "title": "Network Prefixes" + }, + "bfd_enable": { + "type": "boolean", + "title": "BFD Enable" + }, + "bfd_adjacency_state_any": { + "type": "boolean", + "title": "BFD Adjacency State Any" + }, + "no_passive_interfaces": { + "type": "array", + "items": { + "type": "string", + "description": "Interface Name." + }, + "title": "No Passive Interfaces" + }, + "distribute_list_in": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "title": "Route Map" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Distribute List In" + }, + "max_lsa": { + "type": "integer", + "title": "Max LSA" + }, + "timers": { + "type": "object", + "properties": { + "lsa": { + "type": "object", + "properties": { + "rx_min_interval": { + "type": "integer", + "description": "Min interval in msecs between accepting the same LSA.", + "minimum": 0, + "maximum": 600000, + "title": "RX Min Interval" + }, + "tx_delay": { + "type": "object", + "properties": { + "initial": { + "type": "integer", + "description": "Delay to generate first occurrence of LSA in msecs.", + "minimum": 0, + "maximum": 600000, + "title": "Initial" + }, + "min": { + "type": "integer", + "description": "Min delay between originating the same LSA in msecs.", + "minimum": 1, + "maximum": 600000, + "title": "Min" + }, + "max": { + "type": "integer", + "description": "1-600000 Maximum delay between originating the same LSA in msec.", + "minimum": 1, + "maximum": 600000, + "title": "Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TX Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LSA" + }, + "spf_delay": { + "type": "object", + "properties": { + "initial": { + "type": "integer", + "description": "Initial SPF schedule delay in msecs.", + "minimum": 0, + "maximum": 600000, + "title": "Initial" + }, + "min": { + "type": "integer", + "description": "Min Hold time between two SPFs in msecs.", + "minimum": 0, + "maximum": 65535000, + "title": "Min" + }, + "max": { + "type": "integer", + "description": "Max wait time between two SPFs in msecs.", + "minimum": 0, + "maximum": 65535000, + "title": "Max" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SPF Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "default_information_originate": { + "type": "object", + "properties": { + "always": { + "type": "boolean", + "title": "Always" + }, + "metric": { + "type": "integer", + "description": "Metric for default route.", + "minimum": 1, + "maximum": 65535, + "title": "Metric" + }, + "metric_type": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "description": "OSPF metric type for default route.", + "title": "Metric Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Information Originate" + }, + "summary_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "description": "Summary Prefix Address.", + "title": "Prefix" + }, + "tag": { + "type": "integer", + "title": "Tag" + }, + "attribute_map": { + "type": "string", + "title": "Attribute Map" + }, + "not_advertise": { + "type": "boolean", + "title": "Not Advertise" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "prefix" + ] + }, + "title": "Summary Addresses" + }, + "redistribute": { + "type": "object", + "properties": { + "static": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Static" + }, + "connected": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Connected" + }, + "bgp": { + "type": "object", + "properties": { + "route_map": { + "type": "string", + "description": "Route Map Name.", + "title": "Route Map" + }, + "include_leaked": { + "type": "boolean", + "title": "Include Leaked" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redistribute" + }, + "auto_cost_reference_bandwidth": { + "type": "integer", + "description": "Bandwidth in mbps.", + "title": "Auto Cost Reference Bandwidth" + }, + "areas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ID" + }, + "filter": { + "type": "object", + "properties": { + "networks": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 Prefix." + }, + "title": "Networks" + }, + "prefix_list": { + "type": "string", + "description": "Prefix-List Name.", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Filter" + }, + "type": { + "type": "string", + "enum": [ + "normal", + "stub", + "nssa" + ], + "default": "normal", + "title": "Type" + }, + "no_summary": { + "type": "boolean", + "title": "No Summary" + }, + "nssa_only": { + "type": "boolean", + "title": "Nssa Only" + }, + "default_information_originate": { + "type": "object", + "properties": { + "metric": { + "type": "integer", + "description": "Metric for default route.", + "minimum": 1, + "maximum": 65535, + "title": "Metric" + }, + "metric_type": { + "type": "integer", + "enum": [ + 1, + 2 + ], + "description": "OSPF metric type for default route.", + "title": "Metric Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Information Originate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Areas" + }, + "maximum_paths": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "title": "Maximum Paths" + }, + "max_metric": { + "type": "object", + "properties": { + "router_lsa": { + "type": "object", + "properties": { + "external_lsa": { + "type": "object", + "properties": { + "override_metric": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "title": "Override Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "External LSA" + }, + "include_stub": { + "type": "boolean", + "title": "Include Stub" + }, + "on_startup": { + "type": "string", + "description": "\"wait-for-bgp\" or Integer 5-86400.\nExample: \"wait-for-bgp\" Or \"222\"\n", + "title": "On Startup" + }, + "summary_lsa": { + "type": "object", + "properties": { + "override_metric": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "title": "Override Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Summary LSA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router LSA" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Max Metric" + }, + "mpls_ldp_sync_default": { + "type": "boolean", + "title": "MPLS LDP Sync Default" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router OSPF process ID in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Process IDs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "router_path_selection": { + "type": "object", + "description": "Dynamic path selection configuration.", + "properties": { + "peer_dynamic_source": { + "type": "string", + "enum": [ + "stun" + ], + "description": "Source of dynamic peer discovery.", + "title": "Peer Dynamic Source" + }, + "path_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path group name.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Path group ID.", + "minimum": 1, + "maximum": 65535, + "title": "ID" + }, + "ipsec_profile": { + "type": "string", + "description": "IPSec profile for the path group.", + "title": "Ipsec Profile" + }, + "flow_assignment": { + "type": "string", + "enum": [ + "lan" + ], + "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", + "title": "Flow Assignment" + }, + "local_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Local interface name.", + "pattern": "^Ethernet\\d+(/\\d+)*(\\.\\d+)?$", + "title": "Name" + }, + "public_address": { + "type": "string", + "description": "Public IP assigned by NAT.", + "title": "Public Address" + }, + "stun": { + "type": "object", + "properties": { + "server_profiles": { + "type": "array", + "minItems": 1, + "maxItems": 12, + "description": "STUN server-profile names.", + "items": { + "type": "string" + }, + "title": "Server Profiles" + } + }, + "required": [ + "server_profiles" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Interfaces" + }, + "local_ips": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "public_address": { + "type": "string", + "description": "Public IP assigned by NAT.", + "title": "Public Address" + }, + "stun": { + "type": "object", + "properties": { + "server_profiles": { + "type": "array", + "minItems": 1, + "maxItems": 12, + "description": "STUN server-profile names.", + "items": { + "type": "string" + }, + "title": "Server Profiles" + } + }, + "required": [ + "server_profiles" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_address" + ] + }, + "title": "Local Ips" + }, + "dynamic_peers": { + "type": "object", + "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable `peer dynamic`.", + "title": "Enabled" + }, + "ip_local": { + "type": "boolean", + "description": "Prefer local IP address.", + "title": "IP Local" + }, + "ipsec": { + "type": "boolean", + "description": "IPsec configuration for dynamic peers.", + "title": "Ipsec" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dynamic Peers" + }, + "static_peers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "router_ip": { + "type": "string", + "description": "Peer router IP.", + "title": "Router IP" + }, + "name": { + "type": "string", + "description": "Name of the site.", + "title": "Name" + }, + "ipv4_addresses": { + "type": "array", + "description": "Static IPv4 addresses.", + "items": { + "type": "string" + }, + "title": "IPv4 Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "router_ip" + ] + }, + "title": "Static Peers" + }, + "keepalive": { + "type": "object", + "properties": { + "auto": { + "type": "boolean", + "description": "Enable adaptive keepalive and feedback interval.", + "default": false, + "title": "Auto" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "minimum": 50, + "maximum": 60000, + "title": "Interval" + }, + "failure_threshold": { + "type": "integer", + "minimum": 2, + "maximum": 100, + "description": "Failure threshold in number of intervals. Required when `interval` is set.", + "title": "Failure Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Keepalive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Path Groups" + }, + "load_balance_policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Load-balance policy name.", + "title": "Name" + }, + "lowest_hop_count": { + "type": "boolean", + "description": "Prefer paths with lowest hop-count.", + "title": "Lowest Hop Count" + }, + "jitter": { + "type": "integer", + "description": "Jitter requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Jitter" + }, + "latency": { + "type": "integer", + "description": "One way delay requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Latency" + }, + "loss_rate": { + "type": "string", + "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "title": "Loss Rate" + }, + "path_groups": { + "type": "array", + "description": "List of path-groups to use for this load balance policy.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path-group name.", + "title": "Name" + }, + "priority": { + "type": "integer", + "description": "Priority for this path-group.\nThe EOS default value is 1.", + "minimum": 1, + "maximum": 65535, + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Path Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Load Balance Policies" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "DPS policy name.", + "title": "Name" + }, + "default_match": { + "type": "object", + "properties": { + "load_balance": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Match" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Rule ID.", + "minimum": 1, + "maximum": 255, + "title": "ID" + }, + "application_profile": { + "type": "string", + "title": "Application Profile" + }, + "load_balance": { + "type": "string", + "description": "Name of the load-balance policy.", + "title": "Load Balance" + } + }, + "required": [ + "application_profile", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Rules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "path_selection_policy": { + "type": "string", + "description": "DPS policy name to use for this VRF.", + "title": "Path Selection Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4_segment_size": { + "type": "string", + "description": "Segment Size for IPv4.\nCan be an integer in the range 64-65515 or \"auto\".\n\"auto\" will enable auto-discovery which clamps the TCP MSS value to the minimum of all the direct paths\nand multi-hop path MTU towards a remote VTEP (minus 40bytes to account for IP + TCP header).", + "title": "IPv4 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "ingress" + ], + "default": "ingress", + "description": "Enforce on packets through DPS tunnel for a specific direction.\nOnly 'ingress' direction is supported.", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Path Selection" + }, + "router_pim_sparse_mode": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "bfd": { + "type": "boolean", + "description": "Enable/Disable BFD.", + "title": "BFD" + }, + "ssm_range": { + "type": "string", + "description": "IPv4 Prefix associated with SSM.", + "title": "Ssm Range" + }, + "rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "RP Address.", + "title": "Address" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "access_lists": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Access Lists" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority" + }, + "hashmask": { + "type": "integer", + "minimum": 0, + "maximum": 32, + "title": "Hashmask" + }, + "override": { + "type": "boolean", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "RP Addresses" + }, + "anycast_rps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Anycast RP Address.", + "title": "Address" + }, + "other_anycast_rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Other Anycast RP Address.", + "title": "Address" + }, + "register_count": { + "type": "integer", + "title": "Register Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "Other Anycast RP Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "Anycast RPs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "ipv4": { + "type": "object", + "properties": { + "bfd": { + "type": "boolean", + "description": "Enable/Disable BFD.", + "title": "BFD" + }, + "rp_addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "RP Address.", + "title": "Address" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "access_lists": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Access Lists" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Priority" + }, + "hashmask": { + "type": "integer", + "minimum": 0, + "maximum": 32, + "title": "Hashmask" + }, + "override": { + "type": "boolean", + "title": "Override" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "RP Addresses" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router PIM Sparse Mode" + }, + "router_segment_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "policies": { + "type": "array", + "description": "Customised application policies.\nUsing the Application Traffic Recognition L4 profiles, custom policies can be defined. The built-in application 'app-match-all' can be used to match any packets.\nNote that this is stateless, so both the source and destination flows need to be considered.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Policy name.", + "title": "Name" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "minimum": 1, + "maximum": 1023, + "title": "Sequence" + }, + "application": { + "type": "string", + "description": "The name of the application.", + "title": "Application" + }, + "action": { + "type": "string", + "description": "The action to take - note that platform support for the redirect action is limited. The \"redirect\" action also requires the 'next_hop' to be configured.", + "enum": [ + "forward", + "drop", + "redirect" + ], + "title": "Action" + }, + "log": { + "type": "boolean", + "description": "Enable logging - note that platform support is limited.", + "title": "Log" + }, + "stateless": { + "type": "boolean", + "description": "Take action, regardless of state. Should be set to 'true' for MSS-G.", + "default": true, + "title": "Stateless" + }, + "next_hop": { + "type": "string", + "description": "When the action is 'redirect', this indicates the IPv4 next hop to redirect to.", + "title": "Next Hop" + } + }, + "required": [ + "application", + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Policies" + }, + "vrfs": { + "type": "array", + "description": "The name of the VRF that the segments and policies are defined in.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "segments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Segment name.", + "title": "Name" + }, + "definition": { + "type": "object", + "properties": { + "interfaces": { + "type": "array", + "description": "The names of the source interface e.g. Port-Channel1 - note that platform support is limited.", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "match_lists": { + "type": "array", + "description": "The set of lists that define the segment. These can be a mix of IPv4 and IPv6 prefix or match lists.", + "maxItems": 2, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "address_family": { + "type": "string", + "description": "Indicate which address-family the match list belongs to e.g. ipv4 or ipv6.", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Address Family" + }, + "covered_prefix_list": { + "type": "string", + "description": "The name of the prefix-list. You can have a maximum of one per address-family. Mutually exclusive to the use of match_list. If both are configured prefix takes precedence.", + "title": "Covered Prefix List" + }, + "prefix": { + "type": "string", + "description": "The name of the match-list. You can have a maximum of one per address-family. Mutually exclusive to the use of covered_prefix_list. If both are configured prefix takes precedence.", + "title": "Prefix" + } + }, + "required": [ + "address_family" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Match Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Definition" + }, + "policies": { + "type": "array", + "description": "The policies controlling traffic into the segment.", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "The name of the source segment or 'forwarding-segments' for all segments.", + "title": "From" + }, + "policy": { + "type": "string", + "description": "The name of the policy to apply. The built-in policies are 'policy-forward-all' and 'policy-drop-all'.", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "from" + ] + }, + "title": "Policies" + }, + "fallback_policy": { + "type": "string", + "description": "Only supported on the R3 series platforms, this allows a per-segment default policy to be specified by name.", + "title": "Fallback Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Segments" + } + }, + "required": [ + "segments", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Segment Security" + }, + "router_service_insertion": { + "type": "object", + "description": "Configure network services inserted to data forwarding.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "connections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Connection name.", + "title": "Name" + }, + "ethernet_interface": { + "type": "object", + "description": "Outgoing physical interface or subinterface to use for the connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", + "properties": { + "name": { + "type": "string", + "description": "e.g. Ethernet2 or Ethernet2/2.2", + "title": "Name" + }, + "next_hop": { + "type": "string", + "description": "Next-hop IPv4 address (without mask).", + "title": "Next Hop" + } + }, + "required": [ + "name", + "next_hop" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Interface" + }, + "tunnel_interface": { + "type": "object", + "description": "Outgoing tunnel interface(s) to use for this connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", + "properties": { + "primary": { + "type": "string", + "description": "e.g. Tunnel2", + "title": "Primary" + }, + "secondary": { + "type": "string", + "description": "e.g. Tunnel3", + "title": "Secondary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tunnel Interface" + }, + "monitor_connectivity_host": { + "type": "string", + "description": "Name of the host defined under `monitor_connectivity.hosts` used to derive the health of the connection.", + "title": "Monitor Connectivity Host" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Connections" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Service Insertion" + }, + "router_traffic_engineering": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "router_id": { + "type": "object", + "properties": { + "ipv4": { + "type": "string", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router ID" + }, + "segment_routing": { + "type": "object", + "properties": { + "colored_tunnel_rib": { + "type": "boolean", + "title": "Colored Tunnel Rib" + }, + "policy_endpoints": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "IPv4 or IPv6 address.", + "title": "Address" + }, + "colors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "title": "Value" + }, + "binding_sid": { + "type": "integer", + "title": "Binding Sid" + }, + "description": { + "type": "string", + "title": "Description" + }, + "name": { + "type": "string", + "title": "Name" + }, + "sbfd_remote_discriminator": { + "type": "string", + "description": "IPv4 address or 32 bit integer.", + "title": "SBFD Remote Discriminator" + }, + "path_group": { + "type": "array", + "items": { + "type": "object", + "properties": { + "preference": { + "type": "integer", + "title": "Preference" + }, + "explicit_null": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "ipv4 ipv6", + "none" + ], + "title": "Explicit Null" + }, + "segment_list": { + "type": "array", + "items": { + "type": "object", + "properties": { + "label_stack": { + "type": "string", + "description": "Label Stack as string.\nExample: \"100 2000 30\"\n", + "title": "Label Stack" + }, + "weight": { + "type": "integer", + "title": "Weight" + }, + "index": { + "type": "integer", + "title": "Index" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Segment List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "value" + ] + }, + "title": "Colors" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Policy Endpoints" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Segment Routing" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Router Traffic Engineering" + }, + "service_routing_configuration_bgp": { + "type": "object", + "properties": { + "no_equals_default": { + "type": "boolean", + "title": "No Equals Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Routing Configuration BGP" + }, + "service_routing_protocols_model": { + "type": "string", + "enum": [ + "multi-agent", + "ribd" + ], + "title": "Service Routing Protocols Model" + }, + "service_unsupported_transceiver": { + "type": "object", + "properties": { + "license_name": { + "type": "string", + "title": "License Name" + }, + "license_key": { + "type": "string", + "title": "License Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Unsupported Transceiver" + }, + "sflow": { + "type": "object", + "properties": { + "sample": { + "type": "integer", + "title": "Sample" + }, + "sample_input_subinterface": { + "type": "boolean", + "title": "Sample Input Subinterface" + }, + "sample_output_subinterface": { + "type": "boolean", + "title": "Sample Output Subinterface" + }, + "dangerous": { + "type": "boolean", + "title": "Dangerous" + }, + "polling_interval": { + "type": "integer", + "description": "Polling interval in seconds.", + "title": "Polling Interval" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "destination": { + "type": "string", + "description": "Sflow Destination IP Address.", + "title": "Destination" + }, + "port": { + "type": "integer", + "description": "Port Number", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "destination" + ] + }, + "title": "Destinations" + }, + "source": { + "type": "string", + "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", + "title": "Source" + }, + "source_interface": { + "type": "string", + "description": "Source Interface.", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "destination": { + "type": "string", + "description": "Sflow Destination IP Address.", + "title": "Destination" + }, + "port": { + "type": "integer", + "description": "Port Number.", + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "destination" + ] + }, + "title": "Destinations" + }, + "source": { + "type": "string", + "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", + "title": "Source" + }, + "source_interface": { + "type": "string", + "description": "Source Interface.", + "title": "Source Interface" + }, + "extensions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Extension Name.", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "description": "Enable or Disable Extension.", + "title": "Enabled" + } + }, + "required": [ + "enabled", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Extensions" + }, + "interface": { + "type": "object", + "properties": { + "disable": { + "type": "object", + "properties": { + "default": { + "type": "boolean", + "title": "Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Disable" + }, + "egress": { + "type": "object", + "properties": { + "enable_default": { + "type": "boolean", + "description": "Enable egress sFlow by default.\n", + "title": "Enable Default" + }, + "unmodified": { + "type": "boolean", + "description": "Enable egress sFlow unmodified.\nPlatform dependent feature.\n", + "title": "Unmodified" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Interface" + }, + "run": { + "type": "boolean", + "title": "Run" + }, + "hardware_acceleration": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "modules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Modules" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hardware Acceleration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "snmp_server": { + "type": "object", + "description": "SNMP settings.", + "properties": { + "engine_ids": { + "type": "object", + "properties": { + "local": { + "type": "string", + "description": "Engine ID in hexadecimal.\n", + "title": "Local" + }, + "remotes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Remote engine ID in hexadecimal.\n", + "title": "ID" + }, + "address": { + "type": "string", + "description": "Hostname or IP of remote engine.\n", + "title": "Address" + }, + "udp_port": { + "type": "integer", + "title": "UDP Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Remotes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Engine IDs" + }, + "contact": { + "type": "string", + "description": "SNMP contact.", + "title": "Contact" + }, + "location": { + "type": "string", + "description": "SNMP location.", + "title": "Location" + }, + "communities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community name.", + "title": "Name" + }, + "access": { + "type": "string", + "enum": [ + "ro", + "rw" + ], + "title": "Access" + }, + "access_list_ipv4": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv4" + }, + "access_list_ipv6": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv6" + }, + "view": { + "type": "string", + "title": "View" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Communities" + }, + "ipv4_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv4 Acls" + }, + "ipv6_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Acls" + }, + "local_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Local Interfaces" + }, + "views": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "SNMP view name.", + "title": "Name" + }, + "mib_family_name": { + "type": "string", + "title": "MIB Family Name" + }, + "included": { + "type": "boolean", + "title": "Included" + }, + "MIB_family_name": { + "type": "string", + "title": "MIB Family Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Views" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "authentication": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication" + }, + "read": { + "type": "string", + "description": "Read view.", + "title": "Read" + }, + "write": { + "type": "string", + "description": "Write view.", + "title": "Write" + }, + "notify": { + "type": "string", + "description": "Notify view.", + "title": "Notify" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Groups" + }, + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Username.", + "title": "Name" + }, + "group": { + "type": "string", + "description": "Group name.", + "title": "Group" + }, + "remote_address": { + "type": "string", + "description": "Hostname or ip of remote engine.\nThe remote_address and udp_port are used for remote users.\n", + "title": "Remote Address" + }, + "udp_port": { + "type": "integer", + "description": "udp_port will not be used if no remote_address is configured.\n", + "title": "UDP Port" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "localized": { + "type": "string", + "description": "Engine ID in hexadecimal for localizing auth and/or priv.\n", + "title": "Localized" + }, + "auth": { + "type": "string", + "description": "Hash algorithm.\n", + "title": "Auth" + }, + "auth_passphrase": { + "type": "string", + "description": "Hashed authentication passphrase if localized is used else cleartext authentication passphrase.\n", + "title": "Auth Passphrase" + }, + "priv": { + "type": "string", + "description": "Encryption algorithm.\n", + "title": "Priv" + }, + "priv_passphrase": { + "type": "string", + "description": "Hashed privacy passphrase if localized is used else cleartext privacy passphrase.\n", + "title": "Priv Passphrase" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "version": { + "type": "string", + "enum": [ + "1", + "2c", + "3" + ], + "title": "Version" + }, + "community": { + "type": "string", + "description": "Community name.", + "title": "Community" + }, + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "Username" + }, + "authentication_level": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Hosts" + }, + "traps": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "default": false, + "description": "Enable or disable all snmp-traps.\n", + "title": "Enable" + }, + "snmp_traps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Snmp Traps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traps" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "enable": { + "type": "boolean", + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Snmp Server" + }, + "spanning_tree": { + "type": "object", + "properties": { + "root_super": { + "type": "boolean", + "title": "Root Super" + }, + "edge_port": { + "type": "object", + "properties": { + "bpdufilter_default": { + "type": "boolean", + "title": "Bpdufilter Default" + }, + "bpduguard_default": { + "type": "boolean", + "title": "Bpduguard Default" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Edge Port" + }, + "mode": { + "type": "string", + "enum": [ + "mstp", + "rstp", + "rapid-pvst", + "none" + ], + "title": "Mode" + }, + "bpduguard_rate_limit": { + "type": "object", + "properties": { + "default": { + "type": "boolean", + "title": "Default" + }, + "count": { + "type": "integer", + "description": "Maximum number of BPDUs per timer interval.", + "title": "Count" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Bpduguard Rate Limit" + }, + "rstp_priority": { + "type": "integer", + "title": "Rstp Priority" + }, + "mst": { + "type": "object", + "properties": { + "pvst_border": { + "type": "boolean", + "title": "Pvst Border" + }, + "configuration": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "revision": { + "type": "integer", + "description": "0-65535.", + "title": "Revision" + }, + "instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Instance ID.", + "title": "ID" + }, + "vlans": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18\n", + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Instances" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Configuration" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mst" + }, + "mst_instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Instance ID.", + "title": "ID" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Mst Instances" + }, + "no_spanning_tree_vlan": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", + "title": "No Spanning Tree VLAN" + }, + "rapid_pvst_instances": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", + "title": "ID" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "Rapid Pvst Instances" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Spanning Tree" + }, + "standard_access_lists": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Access-list Name.", + "title": "Name" + }, + "counters_per_entry": { + "type": "boolean", + "title": "Counters Per Entry" + }, + "sequence_numbers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequence": { + "type": "integer", + "description": "Sequence ID.", + "title": "Sequence" + }, + "action": { + "type": "string", + "description": "Action as string.\nExample: \"deny ip any any\"\n", + "title": "Action" + } + }, + "required": [ + "action", + "sequence" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Sequence Numbers" + } + }, + "required": [ + "sequence_numbers", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Standard Access Lists" + }, + "static_routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "destination_address_prefix": { + "type": "string", + "description": "IPv4_network/Mask.", + "title": "Destination Address Prefix" + }, + "interface": { + "type": "string", + "title": "Interface" + }, + "gateway": { + "type": "string", + "description": "IPv4 Address.", + "title": "Gateway" + }, + "track_bfd": { + "type": "boolean", + "description": "Track next-hop using BFD.", + "title": "Track BFD" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + }, + "tag": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Tag" + }, + "name": { + "type": "string", + "description": "Description.", + "title": "Name" + }, + "metric": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Metric" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static Routes" + }, + "stun": { + "type": "object", + "description": "STUN configuration.", + "properties": { + "client": { + "type": "object", + "description": "STUN client settings.", + "properties": { + "server_profiles": { + "type": "array", + "description": "List of server profiles for the client.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "port": { + "type": "integer", + "description": "Destination port for the request STUN server (default - 3478).", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Server Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "server": { + "type": "object", + "description": "STUN server settings.", + "properties": { + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "local_interfaces": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Local Interfaces" + }, + "bindings_timeout": { + "type": "integer", + "description": "Timeout for bindings stored on STUN server in seconds.", + "minimum": 10, + "maximum": 7200, + "title": "Bindings Timeout" + }, + "ssl_profile": { + "type": "string", + "description": "SSL profile name.", + "title": "SSL Profile" + }, + "ssl_connection_lifetime": { + "type": "object", + "description": "SSL connection lifetime in minutes or hours.\nIf both are specified, minutes is given higher precedence.", + "properties": { + "minutes": { + "type": "integer", + "description": "SSL connection lifetime in minutes (default - 120).", + "minimum": 1, + "maximum": 1440, + "title": "Minutes" + }, + "hours": { + "type": "integer", + "description": "SSL connection lifetime in hours (default - 2).", + "minimum": 1, + "maximum": 24, + "title": "Hours" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SSL Connection Lifetime" + }, + "port": { + "type": "integer", + "description": "Listening port for STUN server (default - 3478).", + "minimum": 1, + "maximum": 65535, + "title": "Port" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Server" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "STUN" + }, + "switchport_default": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "routed", + "access" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "cos": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "COS" + }, + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "description": "VLAN ID.", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport Default" + }, + "switchport_port_security": { + "type": "object", + "properties": { + "mac_address": { + "type": "object", + "properties": { + "aging": { + "type": "boolean", + "title": "Aging" + }, + "moveable": { + "type": "boolean", + "title": "Moveable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "persistence_disabled": { + "type": "boolean", + "title": "Persistence Disabled" + }, + "violation_protect_chip_based": { + "type": "boolean", + "title": "Violation Protect Chip Based" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport Port Security" + }, + "sync_e": { + "type": "object", + "properties": { + "network_option": { + "type": "integer", + "minimum": 1, + "maximum": 2, + "title": "Network Option" + } + }, + "required": [ + "network_option" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "system": { + "type": "object", + "properties": { + "control_plane": { + "type": "object", + "properties": { + "tcp_mss": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment size.", + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment size.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss" + }, + "ipv4_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "acl_name": { + "type": "string", + "title": "Acl Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "acl_name" + ] + }, + "title": "IPv4 Access Groups" + }, + "ipv6_access_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "acl_name": { + "type": "string", + "title": "Acl Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "acl_name" + ] + }, + "title": "IPv6 Access Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Plane" + }, + "l1": { + "type": "object", + "properties": { + "unsupported_speed_action": { + "type": "string", + "enum": [ + "error", + "warn" + ], + "title": "Unsupported Speed Action" + }, + "unsupported_error_correction_action": { + "type": "string", + "enum": [ + "error", + "warn" + ], + "title": "Unsupported Error Correction Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "System" + }, + "tacacs_servers": { + "type": "object", + "properties": { + "timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "key": { + "type": "string", + "description": "Encrypted key.", + "title": "Key" + }, + "key_type": { + "type": "string", + "enum": [ + "0", + "7", + "8a" + ], + "default": "7", + "title": "Key Type" + }, + "single_connection": { + "type": "boolean", + "title": "Single Connection" + }, + "timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "minimum": 1, + "maximum": 1000, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Hosts" + }, + "policy_unknown_mandatory_attribute_ignore": { + "type": "boolean", + "title": "Policy Unknown Mandatory Attribute Ignore" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tacacs Servers" + }, + "tap_aggregation": { + "type": "object", + "properties": { + "mode": { + "type": "object", + "properties": { + "exclusive": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "profile": { + "description": "Profile Name.", + "type": "string", + "title": "Profile" + }, + "no_errdisable": { + "type": "array", + "items": { + "type": "string", + "description": "Interface name e.g Ethernet1, Port-Channel1." + }, + "title": "No Errdisable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Exclusive" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Mode" + }, + "encapsulation_dot1br_strip": { + "type": "boolean", + "title": "Encapsulation dot1br Strip" + }, + "encapsulation_vn_tag_strip": { + "type": "boolean", + "title": "Encapsulation VN Tag Strip" + }, + "protocol_lldp_trap": { + "type": "boolean", + "title": "Protocol LLDP Trap" + }, + "truncation_size": { + "type": "integer", + "description": "Allowed truncation_size values vary depending on the platform.\n", + "title": "Truncation Size" + }, + "mac": { + "type": "object", + "properties": { + "timestamp": { + "type": "object", + "description": "mac.timestamp.replace_source_mac and mac.timestamp.header.format are mutually exclsuive. If both are defined, replace_source_mac takes precedence.\n", + "properties": { + "replace_source_mac": { + "type": "boolean", + "title": "Replace Source MAC" + }, + "header": { + "type": "object", + "properties": { + "format": { + "type": "string", + "enum": [ + "48-bit", + "64-bit" + ], + "title": "Format" + }, + "eth_type": { + "description": "EtherType.", + "type": "integer", + "title": "Eth Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Header" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timestamp" + }, + "fcs_append": { + "type": "boolean", + "description": "mac.fcs_append and mac.fcs_error are mutually exclusive. If both are defined, mac.fcs_append takes precedence.\n", + "title": "FCS Append" + }, + "fcs_error": { + "type": "string", + "enum": [ + "correct", + "discard", + "pass-through" + ], + "title": "FCS Error" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap Aggregation" + }, + "tcam_profile": { + "type": "object", + "title": "Hardware TCAM Profiles", + "properties": { + "system": { + "type": "string", + "description": "TCAM profile name to activate.\n", + "title": "System" + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tcam-Profile Name.", + "title": "Name" + }, + "config": { + "type": "string", + "description": "TCAM Profile Config. Since these can be very long, it is often a good idea to import the config from a file.\nExample: \"{{ lookup('file', 'TCAM_TRAFFIC_POLICY.conf') }}\"\n", + "title": "Config" + }, + "source": { + "type": "string", + "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.\n", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Profiles" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "terminal": { + "type": "object", + "title": "Terminal Settings", + "properties": { + "length": { + "type": "integer", + "minimum": 0, + "maximum": 32767, + "title": "Length" + }, + "width": { + "type": "integer", + "minimum": 10, + "maximum": 32767, + "title": "Width" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "trackers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of tracker object.", + "title": "Name" + }, + "interface": { + "type": "string", + "description": "Name of tracked interface.", + "title": "Interface" + }, + "tracked_property": { + "type": "string", + "default": "line-protocol", + "description": "Property to track.", + "title": "Tracked Property" + } + }, + "required": [ + "interface", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Trackers" + }, + "traffic_policies": { + "type": "object", + "properties": { + "options": { + "type": "object", + "properties": { + "counter_per_interface": { + "type": "boolean", + "title": "Counter Per Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Options" + }, + "field_sets": { + "type": "object", + "properties": { + "ipv4": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 Prefix Field Set Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 Prefix." + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv4" + }, + "ipv6": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 Prefix Field Set Name.", + "title": "Name" + }, + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IPv6 Prefix." + }, + "title": "Prefixes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "IPv6" + }, + "ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "L4 Port Field Set Name.", + "title": "Name" + }, + "port_range": { + "type": "string", + "description": "Example: '10,20,80,440-450'", + "title": "Port Range" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Ports" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Field Sets" + }, + "policies": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Traffic Policy Name.", + "title": "Name" + }, + "matches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Traffic Policy Item.", + "title": "Name" + }, + "type": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ], + "title": "Type" + }, + "source": { + "type": "object", + "properties": { + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or prefix." + }, + "title": "Prefixes" + }, + "prefix_lists": { + "type": "array", + "description": "Field-set prefix lists.", + "items": { + "type": "string" + }, + "title": "Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + }, + "destination": { + "type": "object", + "properties": { + "prefixes": { + "type": "array", + "items": { + "type": "string", + "description": "IP address or prefix." + }, + "title": "Prefixes" + }, + "prefix_lists": { + "type": "array", + "description": "Field-set prefix lists.", + "items": { + "type": "string" + }, + "title": "Prefix Lists" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "ttl": { + "type": "string", + "description": "TTL range.", + "title": "TTL" + }, + "fragment": { + "type": "object", + "description": "The 'fragment' command is not supported when 'source port'\nor 'destination port' command is configured.\n", + "properties": { + "offset": { + "type": "string", + "description": "Fragment offset range.", + "title": "Offset" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Fragment" + }, + "protocols": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "title": "Protocol" + }, + "src_port": { + "type": "string", + "description": "Port range.", + "title": "Src Port" + }, + "dst_port": { + "type": "string", + "description": "Port range.", + "title": "Dst Port" + }, + "src_field": { + "type": "string", + "description": "L4 port range field set.", + "title": "Src Field" + }, + "dst_field": { + "type": "string", + "description": "L4 port range field set.", + "title": "Dst Field" + }, + "flags": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "established", + "initial" + ] + }, + "title": "Flags" + }, + "icmp_type": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ICMP Type" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "protocol" + ] + }, + "title": "Protocols" + }, + "actions": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Actions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Matches" + }, + "default_actions": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "dscp": { + "type": "integer", + "title": "DSCP" + }, + "traffic_class": { + "type": "integer", + "description": "Traffic class ID.", + "title": "Traffic Class" + }, + "count": { + "type": "string", + "description": "Counter name.", + "title": "Count" + }, + "drop": { + "type": "boolean", + "title": "Drop" + }, + "log": { + "type": "boolean", + "description": "Only supported when action is set to drop.", + "title": "Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Actions" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policies" + }, + "transceiver_qsfp_default_mode_4x10": { + "type": "boolean", + "default": true, + "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.\n", + "title": "Transceiver Qsfp Default Mode 4X10" + }, + "tunnel_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tunnel Interface Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "vrf": { + "type": "string", + "description": "VRF Name.", + "title": "VRF" + }, + "underlay_vrf": { + "type": "string", + "description": "Underlay VRF Name.", + "title": "Underlay VRF" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "access_group_in": { + "description": "IPv4 ACL Name for ingress.", + "type": "string", + "title": "Access Group In" + }, + "access_group_out": { + "description": "IPv4 ACL Name for egress.", + "type": "string", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "description": "IPv6 ACL Name for ingress.", + "type": "string", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "description": "IPv6 ACL Name for egress.", + "type": "string", + "title": "IPv6 Access Group Out" + }, + "tcp_mss_ceiling": { + "type": "object", + "properties": { + "ipv4": { + "type": "integer", + "description": "Segment Size for IPv4.", + "minimum": 64, + "maximum": 65495, + "title": "IPv4" + }, + "ipv6": { + "type": "integer", + "description": "Segment Size for IPv6.", + "minimum": 64, + "maximum": 65475, + "title": "IPv6" + }, + "direction": { + "type": "string", + "enum": [ + "ingress", + "egress" + ], + "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.\n", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "tunnel_mode": { + "type": "string", + "enum": [ + "gre", + "ipsec" + ], + "description": "Tunnel encapsulation method.\n`gre`: Generic route encapsulation protocol,\n`ipsec`: IPsec-over-IP encapsulation.", + "title": "Tunnel Mode" + }, + "source_interface": { + "type": "string", + "description": "Tunnel Source Interface Name.", + "title": "Source Interface" + }, + "destination": { + "type": "string", + "description": "IPv4 or IPv6 Address Tunnel Destination.", + "title": "Destination" + }, + "path_mtu_discovery": { + "type": "boolean", + "description": "Enable Path MTU Discovery On Tunnel.", + "title": "Path MTU Discovery" + }, + "ipsec_profile": { + "type": "string", + "description": "Used only when `tunnel_mode` is set to `ipsec`.\nIt must target a defined IPsec profile.", + "title": "Ipsec Profile" + }, + "nat_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Nat Profile" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tunnel Interfaces" + }, + "virtual_source_nat_vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "ip_address": { + "type": "string", + "description": "IPv4 Address.", + "title": "IP Address" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 Address.", + "title": "IPv6 Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Virtual Source Nat VRFs" + }, + "vlan_interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VLAN interface name like \"Vlan123\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "arp_aging_timeout": { + "type": "integer", + "description": "In seconds.", + "minimum": 1, + "maximum": 65535, + "title": "ARP Aging Timeout" + }, + "arp_cache_dynamic_capacity": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "ARP Cache Dynamic Capacity" + }, + "arp_gratuitous_accept": { + "type": "boolean", + "title": "ARP Gratuitous Accept" + }, + "arp_monitor_mac_address": { + "type": "boolean", + "title": "ARP Monitor MAC Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ip_directed_broadcast": { + "type": "boolean", + "title": "IP Directed Broadcast" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 address or IPv4_address/Mask." + }, + "title": "IP Virtual Router Addresses" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address Virtual" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_igmp": { + "type": "boolean", + "title": "IP IGMP" + }, + "ip_igmp_version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "title": "IP IGMP Version" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "ip_helpers": { + "type": "array", + "description": "List of DHCP servers.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IP address or hostname of DHCP server.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface used as source for forwarded DHCP packets.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF where DHCP server can be reached.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "IP DHCP Relay All Subnets" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_virtual_router_address": { + "type": "string", + "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", + "deprecated": true, + "title": "IPv6 Virtual Router Address" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", + "items": { + "type": "string", + "description": "IPv6 address or IPv6_address/Mask." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_other_config_flag": { + "type": "boolean", + "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", + "title": "IPv6 ND Other Config Flag" + }, + "ipv6_nd_cache": { + "type": "object", + "description": "IPv6 neighbor cache options.", + "properties": { + "dynamic_capacity": { + "type": "integer", + "description": "Capacity of dynamic cache entries.", + "minimum": 0, + "maximum": 4294967295, + "title": "Dynamic Capacity" + }, + "expire": { + "type": "integer", + "description": "Cache entries expirery in seconds.", + "minimum": 1, + "maximum": 65535, + "title": "Expire" + }, + "refresh_always": { + "type": "boolean", + "description": "Force refresh on cache expiry.", + "title": "Refresh Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 ND Cache" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "ipv6_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "IPv6 DHCP Relay All Subnets" + }, + "access_group_in": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group Out" + }, + "multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password used for simple authentication.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "description": "Keys used for message-digest authentication.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "no_autostate": { + "type": "boolean", + "title": "No Autostate" + }, + "vrrp_ids": { + "type": "array", + "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "vrrp": { + "type": "object", + "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", + "deprecated": true, + "properties": { + "virtual_router": { + "type": "string", + "description": "Virtual Router ID.", + "title": "Virtual Router" + }, + "priority": { + "type": "integer", + "description": "Instance priority.", + "title": "Priority" + }, + "advertisement_interval": { + "type": "integer", + "title": "Advertisement Interval" + }, + "preempt_delay_minimum": { + "type": "integer", + "title": "Preempt Delay Minimum" + }, + "ipv4": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VRRP" + }, + "ip_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Attached Host Route Export" + }, + "ipv6_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Administrative distance for generated routes.", + "title": "Distance" + }, + "prefix_length": { + "type": "integer", + "minimum": 0, + "maximum": 128, + "description": "Prefix length for generated routes.", + "title": "Prefix Length" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Attached Host Route Export" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Minimum RX hold time in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Name of policy-map used for policy based routing.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of VLANs as string.", + "title": "PVLAN Mapping" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Key only used for documentation or validation purposes.", + "title": "Tags" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VLAN Interfaces" + }, + "vlan_internal_order": { + "type": "object", + "properties": { + "allocation": { + "type": "string", + "enum": [ + "ascending", + "descending" + ], + "title": "Allocation" + }, + "range": { + "type": "object", + "properties": { + "beginning": { + "type": "integer", + "minimum": 2, + "maximum": 4094, + "description": "First VLAN ID.", + "title": "Beginning" + }, + "ending": { + "type": "integer", + "minimum": 2, + "maximum": 4094, + "description": "Last VLAN ID.", + "title": "Ending" + } + }, + "required": [ + "beginning", + "ending" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Range" + } + }, + "required": [ + "allocation", + "range" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VLAN Internal Order" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "name": { + "type": "string", + "description": "VLAN Name.", + "title": "Name" + }, + "state": { + "type": "string", + "enum": [ + "active", + "suspend" + ], + "title": "State" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Trunk Group Name." + }, + "title": "Trunk Groups" + }, + "private_vlan": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "community", + "isolated" + ], + "title": "Type" + }, + "primary_vlan": { + "type": "integer", + "description": "Primary VLAN ID.", + "title": "Primary VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Private VLAN" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vmtracer_sessions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Vmtracer Session Name.", + "title": "Name" + }, + "url": { + "type": "string", + "title": "URL" + }, + "username": { + "type": "string", + "title": "Username" + }, + "password": { + "type": "string", + "description": "Type 7 Password Hash.", + "title": "Password" + }, + "autovlan_disable": { + "type": "boolean", + "title": "Autovlan Disable" + }, + "source_interface": { + "type": "string", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VMTracer Sessions" + }, + "vrfs": { + "type": "array", + "description": "These keys are ignored if the name of the vrf is 'default'.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "ip_routing": { + "type": "boolean", + "title": "IP Routing" + }, + "ipv6_routing": { + "type": "boolean", + "title": "IPv6 Routing" + }, + "ip_routing_ipv6_interfaces": { + "type": "boolean", + "title": "IP Routing IPv6 Interfaces" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "vxlan_interface": { + "type": "object", + "properties": { + "Vxlan1": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "Description" + }, + "vxlan": { + "type": "object", + "properties": { + "source_interface": { + "type": "string", + "description": "Source Interface Name.", + "title": "Source Interface" + }, + "multicast": { + "type": "object", + "properties": { + "headend_replication": { + "type": "boolean", + "title": "Headend Replication" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "controller_client": { + "type": "object", + "description": "Client to CVX Controllers.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Controller Client" + }, + "mlag_source_interface": { + "type": "string", + "title": "MLAG Source Interface" + }, + "udp_port": { + "type": "integer", + "title": "UDP Port" + }, + "vtep_to_vtep_bridging": { + "type": "boolean", + "description": "Enable bridging between different VTEPs in vxlan overlay.", + "title": "Vtep To Vtep Bridging" + }, + "virtual_router_encapsulation_mac_address": { + "type": "string", + "description": "\"mlag-system-id\" or ethernet_address (H.H.H).\n", + "title": "Virtual Router Encapsulation MAC Address" + }, + "bfd_vtep_evpn": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "prefix_list": { + "type": "string", + "title": "Prefix List" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD Vtep EVPN" + }, + "qos": { + "type": "object", + "description": "For the Traffic Class to be derived based on the outer DSCP field of the incoming VxLan packet, the core ports must be in \"DSCP Trust\" mode.\n!!!Warning, only few hardware types with software version >= 4.26.0 support the below knobs to configure Vxlan DSCP mapping.\n", + "properties": { + "dscp_propagation_encapsulation": { + "type": "boolean", + "title": "DSCP Propagation Encapsulation" + }, + "ecn_propagation": { + "type": "boolean", + "description": "Enable copying the ECN marking to/from encapsulated packets.\n", + "title": "Ecn Propagation" + }, + "map_dscp_to_traffic_class_decapsulation": { + "type": "boolean", + "title": "Map DSCP To Traffic Class Decapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VLAN ID.", + "title": "ID" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "multicast_group": { + "type": "string", + "description": "IP Multicast Group Address.", + "title": "Multicast Group" + }, + "flood_vteps": { + "type": "array", + "items": { + "type": "string", + "description": "Remote VTEP IP Address." + }, + "title": "Flood Vteps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VLANs" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF Name.", + "title": "Name" + }, + "vni": { + "type": "integer", + "title": "Vni" + }, + "multicast_group": { + "type": "string", + "description": "IP Multicast Group Address.", + "title": "Multicast Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "flood_vteps": { + "type": "array", + "items": { + "type": "string", + "description": "Remote VTEP IP Address." + }, + "title": "Flood Vteps" + }, + "flood_vtep_learned_data_plane": { + "type": "boolean", + "title": "Flood Vtep Learned Data Plane" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN" + }, + "eos_cli": { + "type": "string", + "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.\n", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Vxlan1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VxLAN Interface" + } + }, + "additionalProperties": true, + "title": "Structured Config" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the root level of the final EOS configuration.", + "title": "Raw EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "default": [ + { + "platforms": [ + "default" + ], + "feature_support": { + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "7050X3" + ], + "feature_support": { + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + }, + "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072" + }, + { + "platforms": [ + "720XP" + ], + "feature_support": { + "poe": true, + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + }, + "trident_forwarding_table_partition": "flexible exact-match 16000 l2-shared 18000 l3-shared 22000" + }, + { + "platforms": [ + "750", + "755", + "758" + ], + "management_interface": "Management0", + "feature_support": { + "poe": true, + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "720DP", + "722XP", + "710P" + ], + "feature_support": { + "poe": true, + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "7010TX" + ], + "feature_support": { + "queue_monitor_length_notify": false, + "per_interface_mtu": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "7280R", + "7280R2", + "7020R" + ], + "lag_hardware_only": true, + "reload_delay": { + "mlag": 900, + "non_mlag": 1020 + }, + "tcam_profile": "vxlan-routing" + }, + { + "platforms": [ + "7280R3" + ], + "reload_delay": { + "mlag": 900, + "non_mlag": 1020 + } + }, + { + "platforms": [ + "7500R", + "7500R2" + ], + "lag_hardware_only": true, + "management_interface": "Management0", + "reload_delay": { + "mlag": 900, + "non_mlag": 1020 + }, + "tcam_profile": "vxlan-routing" + }, + { + "platforms": [ + "7500R3", + "7800R3" + ], + "management_interface": "Management0", + "reload_delay": { + "mlag": 900, + "non_mlag": 1020 + } + }, + { + "platforms": [ + "7358X4" + ], + "management_interface": "Management1/1", + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + }, + "feature_support": { + "queue_monitor_length_notify": false, + "interface_storm_control": true, + "bgp_update_wait_for_convergence": true, + "bgp_update_wait_install": false + } + }, + { + "platforms": [ + "7368X4" + ], + "management_interface": "Management0", + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "7300X3" + ], + "management_interface": "Management0", + "reload_delay": { + "mlag": 1200, + "non_mlag": 1320 + }, + "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072" + }, + { + "platforms": [ + "VEOS", + "VEOS-LAB", + "vEOS", + "vEOS-lab" + ], + "feature_support": { + "bgp_update_wait_for_convergence": false, + "bgp_update_wait_install": false, + "interface_storm_control": false, + "queue_monitor_length_notify": false + }, + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "CEOS", + "cEOS", + "ceos", + "cEOSLab" + ], + "feature_support": { + "bgp_update_wait_for_convergence": false, + "bgp_update_wait_install": false, + "interface_storm_control": false, + "queue_monitor_length_notify": false + }, + "management_interface": "Management0", + "reload_delay": { + "mlag": 300, + "non_mlag": 330 + } + }, + { + "platforms": [ + "AWE-5310", + "AWE-5510", + "AWE-7250R", + "AWE-7230R" + ], + "feature_support": { + "bgp_update_wait_for_convergence": true, + "bgp_update_wait_install": false, + "interface_storm_control": false, + "queue_monitor_length_notify": false + }, + "management_interface": "Management1/1" + }, + { + "platforms": [ + "AWE-7220R" + ], + "feature_support": { + "bgp_update_wait_for_convergence": true, + "bgp_update_wait_install": false, + "interface_storm_control": false, + "queue_monitor_length_notify": false, + "poe": true + }, + "management_interface": "Management1" + } + ], + "title": "Platform Settings" + }, + "platform_speed_groups": { + "type": "array", + "description": "Set Hardware Speed Groups per Platform.", + "items": { + "type": "object", + "properties": { + "platform": { + "type": "string", + "title": "Platform" + }, + "speeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "speed": { + "type": "string", + "title": "Speed" + }, + "speed_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Speed Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "speed" + ] + }, + "title": "Speeds" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "platform" + ] + }, + "title": "Platform Speed Groups" + }, + "pod_name": { + "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- VRF Loopbacks: `vtep_diagnostic.loopback_ip_pools.pod` (Required)\n\nRecommended to be common between Spines and Leafs within a POD (One l3ls topology).\n", + "type": "string", + "title": "Pod Name" + }, + "port_profiles": { + "type": "array", + "description": "Optional profiles to share common settings for connected_endpoints and/or network_ports.\nKeys are the same used under endpoints adapters. Keys defined under endpoints adapters take precedence.\n", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Port profile name.", + "title": "Profile" + }, + "parent_profile": { + "type": "string", + "description": "Parent profile is optional.\nPort_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile).\n", + "title": "Parent Profile" + }, + "speed": { + "type": "string", + "description": "Set adapter speed in the format `` or `forced ` or `auto `.\nIf not specified speed will be auto.\n", + "title": "Speed" + }, + "description": { + "type": "string", + "description": "By default the description is built leveraging `_`.\nWhen set this key will override the default value on the physical ports.\n", + "title": "Description" + }, + "enabled": { + "type": "boolean", + "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n", + "default": true, + "title": "Enabled" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "description": "Interface mode.", + "title": "Mode" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "native_vlan": { + "type": "integer", + "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n", + "minimum": 1, + "maximum": 4094, + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.", + "title": "Native VLAN Tag" + }, + "phone_vlan": { + "type": "integer", + "description": "Phone VLAN for a mode `trunk phone` port.\nRequires `mode: trunk phone` to be set.", + "minimum": 1, + "maximum": 4094, + "title": "Phone VLAN" + }, + "phone_trunk_mode": { + "type": "string", + "enum": [ + "tagged", + "untagged", + "tagged phone", + "untagged phone" + ], + "description": "Specify if the phone traffic is tagged or untagged.\nIf both data and phone traffic are untagged, MAC-Based VLAN Assignment (MBVA) is used, if supported by the model of switch.", + "title": "Phone Trunk Mode" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n", + "title": "Trunk Groups" + }, + "vlans": { + "type": "string", + "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.", + "title": "VLANs" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "received", + "send", + "on" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "qos_profile": { + "type": "string", + "description": "QOS profile name.", + "title": "QOS Profile" + }, + "ptp": { + "type": "object", + "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "title": "Enabled" + }, + "endpoint_role": { + "type": "string", + "default": "follower", + "enum": [ + "bmca", + "default", + "follower" + ], + "title": "Endpoint Role" + }, + "profile": { + "type": "string", + "default": "aes67-r16-2016", + "enum": [ + "aes67", + "aes67-r16-2016", + "smpte2059-2" + ], + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "sflow": { + "type": "boolean", + "description": "Configures sFlow on the interface. Overrides `fabric_sflow.endpoints` setting.", + "title": "Sflow" + }, + "flow_tracking": { + "type": "object", + "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.endpoints` setting.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Flow tracker name as defined in flow_tracking_settings.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracking" + }, + "link_tracking": { + "type": "object", + "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "name": { + "type": "string", + "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Tracking" + }, + "dot1x": { + "type": "object", + "description": "802.1x", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Range 60-4294967295 or \"server\".", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "poe": { + "type": "object", + "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "storm_control": { + "type": "object", + "description": "Storm control settings applied on port toward the endpoint.", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "enum": [ + "percent", + "pps" + ], + "default": "percent", + "description": "Optional variable and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "monitor_sessions": { + "type": "array", + "description": "Used to define switchports as source or destination for monitoring sessions.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Session name.", + "title": "Name" + }, + "role": { + "type": "string", + "enum": [ + "source", + "destination" + ], + "title": "Role" + }, + "source_settings": { + "type": "object", + "properties": { + "direction": { + "type": "string", + "enum": [ + "rx", + "tx", + "both" + ], + "title": "Direction" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL name.", + "type": "string", + "title": "Name" + }, + "priority": { + "type": "integer", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Settings" + }, + "session_settings": { + "type": "object", + "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n", + "properties": { + "encapsulation_gre_metadata_tx": { + "type": "boolean", + "title": "Encapsulation Gre Metadata TX" + }, + "header_remove_size": { + "type": "integer", + "description": "Number of bytes to remove from header.", + "title": "Header Remove Size" + }, + "access_group": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "ip", + "ipv6", + "mac" + ], + "title": "Type" + }, + "name": { + "description": "ACL name.", + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access Group" + }, + "rate_limit_per_ingress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Ingress Chip" + }, + "rate_limit_per_egress_chip": { + "type": "string", + "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", + "title": "Rate Limit Per Egress Chip" + }, + "sample": { + "type": "integer", + "title": "Sample" + }, + "truncate": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "type": "integer", + "description": "Size in bytes.", + "title": "Size" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Session Settings" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Monitor Sessions" + }, + "ethernet_segment": { + "type": "object", + "description": "Settings for all or single-active EVPN multihoming.", + "properties": { + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n", + "title": "Short Esi" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n", + "title": "Redundancy" + }, + "designated_forwarder_algorithm": { + "type": "string", + "enum": [ + "auto", + "modulus", + "preference" + ], + "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n", + "title": "Designated Forwarder Algorithm" + }, + "designated_forwarder_preferences": { + "type": "array", + "description": "Manual preference as described above, required only for preference algorithm.", + "items": { + "type": "integer" + }, + "title": "Designated Forwarder Preferences" + }, + "dont_preempt": { + "type": "boolean", + "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.", + "title": "Dont Preempt" + } + }, + "required": [ + "short_esi" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ethernet Segment" + }, + "port_channel": { + "type": "object", + "description": "Used for port-channel adapter.", + "properties": { + "mode": { + "type": "string", + "description": "Port-Channel Mode.", + "enum": [ + "active", + "passive", + "on" + ], + "title": "Mode" + }, + "channel_id": { + "type": "integer", + "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n", + "title": "Channel ID" + }, + "description": { + "type": "string", + "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n", + "title": "Description" + }, + "enabled": { + "type": "boolean", + "default": true, + "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n", + "title": "Enabled" + }, + "ptp_mpass": { + "type": "boolean", + "default": false, + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "PTP Mpass" + }, + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.", + "deprecated": true, + "title": "Short Esi" + }, + "lacp_fallback": { + "type": "object", + "description": "LACP fallback configuration.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "static", + "individual" + ], + "description": "Either static or individual mode is supported.\nIf the mode is set to \"individual\" the \"individual.profile\" setting must be defined.\n", + "title": "Mode" + }, + "individual": { + "type": "object", + "description": "Define parameters for port-channel member interfaces. Applies only if LACP fallback is set to \"individual\".", + "properties": { + "profile": { + "type": "string", + "description": "Port-profile name to inherit configuration.", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Individual" + }, + "timeout": { + "type": "integer", + "description": "Timeout in seconds. EOS default is 90 seconds.", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Fallback" + }, + "lacp_timer": { + "type": "object", + "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".", + "properties": { + "mode": { + "type": "string", + "enum": [ + "normal", + "fast" + ], + "description": "LACP mode for interface members.", + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.", + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "subinterfaces": { + "type": "array", + "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n", + "items": { + "type": "object", + "properties": { + "number": { + "type": "integer", + "description": "Subinterface number.", + "title": "Number" + }, + "short_esi": { + "type": "string", + "description": "In format xxxx:xxxx:xxxx or \"auto\".\nRequired for multihomed port-channels with subinterfaces.\n", + "title": "Short Esi" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "VLAN ID to bridge.\nDefault is subinterface number.\n", + "title": "VLAN ID" + }, + "encapsulation_vlan": { + "type": "object", + "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n", + "properties": { + "client_dot1q": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Client Dot1Q" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Subinterfaces" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulation are all optional, and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "native_vlan": { + "type": "integer", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "default": false, + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "untagged" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "mlag": { + "type": "integer", + "description": "MLAG ID.", + "minimum": 1, + "maximum": 2000, + "title": "MLAG" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "lacp_fallback_timeout": { + "type": "integer", + "description": "Timeout in seconds.", + "default": 90, + "minimum": 0, + "maximum": 300, + "title": "LACP Fallback Timeout" + }, + "lacp_fallback_mode": { + "type": "string", + "enum": [ + "individual", + "static" + ], + "title": "LACP Fallback Mode" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + }, + "neighbor": { + "type": "string", + "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", + "title": "Neighbor" + }, + "per_link": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "rfc_7130": { + "type": "boolean", + "title": "Rfc 7130" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Per Link" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "default": false, + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "esi": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", + "deprecated": true, + "title": "Esi" + }, + "rt": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", + "deprecated": true, + "title": "Rt" + }, + "lacp_id": { + "type": "string", + "description": "LACP ID with format xxxx.xxxx.xxxx.", + "title": "LACP ID" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + }, + "mpass": { + "type": "boolean", + "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", + "title": "Mpass" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask.", + "title": "IP Address" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6 address/mask.", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Channel" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.", + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "load_interval": { + "type": "integer", + "minimum": 0, + "maximum": 600, + "description": "Interval in seconds for updating interface counters.", + "title": "Load Interval" + }, + "speed": { + "type": "string", + "description": "Speed should be set in the format `` or `forced ` or `auto `.", + "title": "Speed" + }, + "mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "title": "MTU" + }, + "l2_mtu": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", + "title": "L2 MTU" + }, + "l2_mru": { + "type": "integer", + "minimum": 68, + "maximum": 65535, + "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", + "title": "L2 MRU" + }, + "vlans": { + "type": "string", + "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", + "title": "VLANs" + }, + "native_vlan": { + "type": "integer", + "title": "Native VLAN" + }, + "native_vlan_tag": { + "type": "boolean", + "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", + "title": "Native VLAN Tag" + }, + "mode": { + "type": "string", + "enum": [ + "access", + "dot1q-tunnel", + "trunk", + "trunk phone" + ], + "title": "Mode" + }, + "phone": { + "type": "object", + "properties": { + "trunk": { + "type": "string", + "enum": [ + "tagged", + "tagged phone", + "untagged", + "untagged phone" + ], + "title": "Trunk" + }, + "vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Phone" + }, + "l2_protocol": { + "type": "object", + "properties": { + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "Vlan tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "forwarding_profile": { + "type": "string", + "description": "L2 protocol forwarding profile.", + "title": "Forwarding Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "L2 Protocol" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "enum": [ + "routed", + "switched", + "l3dot1q", + "l2dot1q", + "port-channel-member" + ], + "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", + "title": "Type" + }, + "snmp_trap_link_change": { + "type": "boolean", + "title": "Snmp Trap Link Change" + }, + "address_locking": { + "type": "object", + "properties": { + "ipv4": { + "type": "boolean", + "description": "Enable address locking for IPv4.", + "title": "IPv4" + }, + "ipv6": { + "type": "boolean", + "description": "Enable address locking for IPv6.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Address Locking" + }, + "flowcontrol": { + "type": "object", + "properties": { + "received": { + "type": "string", + "enum": [ + "desired", + "on", + "off" + ], + "title": "Received" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flowcontrol" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "flow_tracker": { + "type": "object", + "properties": { + "sampled": { + "type": "string", + "description": "Sampled flow tracker name.", + "title": "Sampled" + }, + "hardware": { + "type": "string", + "description": "Hardware flow tracker name.", + "title": "Hardware" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Flow Tracker" + }, + "error_correction_encoding": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + }, + "fire_code": { + "type": "boolean", + "title": "Fire Code" + }, + "reed_solomon": { + "type": "boolean", + "title": "Reed Solomon" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Error Correction Encoding" + }, + "link_tracking_groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "direction": { + "type": "string", + "enum": [ + "upstream", + "downstream" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Link Tracking Groups" + }, + "evpn_ethernet_segment": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "EVPN Ethernet Segment Identifier (Type 1 format).", + "title": "Identifier" + }, + "redundancy": { + "type": "string", + "enum": [ + "all-active", + "single-active" + ], + "title": "Redundancy" + }, + "designated_forwarder_election": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "modulus", + "preference" + ], + "title": "Algorithm" + }, + "preference_value": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Preference_value is only used when \"algorithm\" is \"preference\".", + "title": "Preference Value" + }, + "dont_preempt": { + "type": "boolean", + "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", + "title": "Dont Preempt" + }, + "hold_time": { + "type": "integer", + "title": "Hold Time" + }, + "subsequent_hold_time": { + "type": "integer", + "title": "Subsequent Hold Time" + }, + "candidate_reachability_required": { + "type": "boolean", + "title": "Candidate Reachability Required" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Designated Forwarder Election" + }, + "mpls": { + "type": "object", + "properties": { + "shared_index": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "title": "Shared Index" + }, + "tunnel_flood_filter_time": { + "type": "integer", + "title": "Tunnel Flood Filter Time" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "route_target": { + "type": "string", + "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN Ethernet Segment" + }, + "encapsulation_dot1q_vlan": { + "type": "integer", + "description": "VLAN tag to configure on sub-interface.", + "title": "Encapsulation Dot1Q VLAN" + }, + "encapsulation_vlan": { + "type": "object", + "properties": { + "client": { + "type": "object", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Client VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Client Outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Client Inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "unmatched": { + "type": "boolean", + "title": "Unmatched" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Client" + }, + "network": { + "type": "object", + "description": "Network encapsulations are all optional and skipped if using client unmatched.", + "properties": { + "dot1q": { + "type": "object", + "properties": { + "vlan": { + "type": "integer", + "description": "Network VLAN ID.", + "title": "VLAN" + }, + "outer": { + "type": "integer", + "description": "Network outer VLAN ID.", + "title": "Outer" + }, + "inner": { + "type": "integer", + "description": "Network inner VLAN ID.", + "title": "Inner" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Dot1Q" + }, + "client": { + "type": "boolean", + "title": "Client" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Network" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation VLAN" + }, + "vlan_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "VLAN ID" + }, + "ip_address": { + "type": "string", + "description": "IPv4 address/mask or \"dhcp\".", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IP Address Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "dhcp_client_accept_default_route": { + "type": "boolean", + "description": "Install default-route obtained via DHCP.", + "title": "DHCP Client Accept Default Route" + }, + "dhcp_server_ipv4": { + "type": "boolean", + "description": "Enable IPv4 DHCP server.", + "title": "DHCP Server IPv4" + }, + "dhcp_server_ipv6": { + "type": "boolean", + "description": "Enable IPv6 DHCP server.", + "title": "DHCP Server IPv6" + }, + "ip_helpers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Source interface name.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_nat": { + "type": "object", + "properties": { + "service_profile": { + "type": "string", + "description": "NAT interface profile.", + "title": "Service Profile" + }, + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "title": "IPv6 Address" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "Link local IPv6 address/mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "Infinite or lifetime in seconds.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "access_group_in": { + "type": "string", + "description": "Access list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "Access list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access list name.", + "title": "IPv6 Access Group Out" + }, + "mac_access_group_in": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group In" + }, + "mac_access_group_out": { + "type": "string", + "description": "MAC access list name.", + "title": "MAC Access Group Out" + }, + "multicast": { + "type": "object", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "ACL name or multicast IP subnet.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Boundaries" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password - only type 7 supported.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "mac_security": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "title": "Profile" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Security" + }, + "tcp_mss_ceiling": { + "type": "object", + "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", + "properties": { + "ipv4_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv4 Segment Size" + }, + "ipv6_segment_size": { + "type": "integer", + "minimum": 64, + "maximum": 65475, + "title": "IPv6 Segment Size" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "TCP Mss Ceiling" + }, + "channel_group": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "mode": { + "type": "string", + "enum": [ + "on", + "active", + "passive" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Channel Group" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "isis_circuit_type": { + "type": "string", + "enum": [ + "level-1-2", + "level-1", + "level-2" + ], + "title": "ISIS Circuit Type" + }, + "isis_hello_padding": { + "type": "boolean", + "title": "ISIS Hello Padding" + }, + "isis_authentication_mode": { + "type": "string", + "enum": [ + "text", + "md5" + ], + "title": "ISIS Authentication Mode" + }, + "isis_authentication_key": { + "type": "string", + "description": "Type-7 encrypted password.", + "title": "ISIS Authentication Key" + }, + "poe": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", + "default": false, + "title": "Disabled" + }, + "priority": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low" + ], + "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", + "title": "Priority" + }, + "reboot": { + "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Reboot" + }, + "link_down": { + "description": "Set the PoE power behavior for a PoE port when the port goes down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + }, + "power_off_delay": { + "type": "integer", + "minimum": 1, + "maximum": 86400, + "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", + "title": "Power Off Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Link Down" + }, + "shutdown": { + "description": "Set the PoE power behavior for a PoE port when the port is admin down.", + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "maintain", + "power-off" + ], + "description": "PoE action for interface.", + "title": "Action" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shutdown" + }, + "limit": { + "type": "object", + "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", + "properties": { + "class": { + "type": "integer", + "minimum": 0, + "maximum": 8, + "title": "Class" + }, + "watts": { + "type": "string", + "title": "Watts" + }, + "fixed": { + "type": "boolean", + "description": "Set to ignore hardware classification.", + "title": "Fixed" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Limit" + }, + "negotiation_lldp": { + "type": "boolean", + "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", + "title": "Negotiation LLDP" + }, + "legacy_detect": { + "type": "boolean", + "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", + "title": "Legacy Detect" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PoE" + }, + "ptp": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "announce": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + }, + "timeout": { + "type": "integer", + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "title": "Delay Req" + }, + "delay_mechanism": { + "type": "string", + "enum": [ + "e2e", + "p2p" + ], + "title": "Delay Mechanism" + }, + "profile": { + "type": "object", + "properties": { + "g8275_1": { + "type": "object", + "properties": { + "destination_mac_address": { + "type": "string", + "enum": [ + "forwardable", + "non-forwardable" + ], + "title": "Destination MAC Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "G8275 1" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Profile" + }, + "sync_message": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "role": { + "type": "string", + "enum": [ + "master", + "dynamic" + ], + "title": "Role" + }, + "vlan": { + "type": "string", + "description": "VLAN can be 'all' or list of vlans as string.", + "title": "VLAN" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4", + "ipv6", + "layer2" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "profile": { + "type": "string", + "description": "Interface profile.", + "title": "Profile" + }, + "storm_control": { + "type": "object", + "properties": { + "all": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "All" + }, + "broadcast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Broadcast" + }, + "multicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "unknown_unicast": { + "type": "object", + "properties": { + "level": { + "type": "string", + "description": "Configure maximum storm-control level.", + "title": "Level" + }, + "unit": { + "type": "string", + "default": "percent", + "enum": [ + "percent", + "pps" + ], + "description": "Optional field and is hardware dependent.", + "title": "Unit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unknown Unicast" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Storm Control" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + }, + "congestion_drops": { + "type": "boolean", + "title": "Congestion Drops" + }, + "spanning_tree": { + "type": "boolean", + "title": "Spanning Tree" + }, + "storm_control_discards": { + "type": "boolean", + "description": "Discards due to storm-control.\n", + "title": "Storm Control Discards" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "lldp": { + "type": "object", + "properties": { + "transmit": { + "type": "boolean", + "title": "Transmit" + }, + "receive": { + "type": "boolean", + "title": "Receive" + }, + "ztp_vlan": { + "type": "integer", + "description": "ZTP vlan number.", + "title": "ZTP VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LLDP" + }, + "trunk_private_vlan_secondary": { + "type": "boolean", + "title": "Trunk Private VLAN Secondary" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of vlans as string.", + "title": "PVLAN Mapping" + }, + "vlan_translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "List of vlans as string (only one vlan if direction is \"both\").", + "title": "From" + }, + "to": { + "type": "integer", + "description": "VLAN ID.", + "title": "To" + }, + "direction": { + "type": "string", + "enum": [ + "in", + "out", + "both" + ], + "default": "both", + "title": "Direction" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VLAN Translations" + }, + "dot1x": { + "type": "object", + "properties": { + "port_control": { + "type": "string", + "enum": [ + "auto", + "force-authorized", + "force-unauthorized" + ], + "title": "Port Control" + }, + "port_control_force_authorized_phone": { + "type": "boolean", + "title": "Port Control Force Authorized Phone" + }, + "reauthentication": { + "type": "boolean", + "title": "Reauthentication" + }, + "pae": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "authenticator" + ], + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PAE" + }, + "authentication_failure": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "allow", + "drop" + ], + "title": "Action" + }, + "allow_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Allow VLAN" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure" + }, + "host_mode": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "multi-host", + "single-host" + ], + "title": "Mode" + }, + "multi_host_authenticated": { + "type": "boolean", + "title": "Multi Host Authenticated" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Host Mode" + }, + "mac_based_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "always": { + "type": "boolean", + "title": "Always" + }, + "host_mode_common": { + "type": "boolean", + "title": "Host Mode Common" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Based Authentication" + }, + "timeout": { + "type": "object", + "properties": { + "idle_host": { + "type": "integer", + "minimum": 10, + "maximum": 65535, + "title": "Idle Host" + }, + "quiet_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "Quiet Period" + }, + "reauth_period": { + "type": "string", + "description": "Value can be 60-4294967295 or 'server'.", + "title": "Reauth Period" + }, + "reauth_timeout_ignore": { + "type": "boolean", + "title": "Reauth Timeout Ignore" + }, + "tx_period": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "title": "TX Period" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timeout" + }, + "reauthorization_request_limit": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "title": "Reauthorization Request Limit" + }, + "unauthorized": { + "type": "object", + "properties": { + "access_vlan_membership_egress": { + "type": "boolean", + "title": "Access VLAN Membership Egress" + }, + "native_vlan_membership_egress": { + "type": "boolean", + "title": "Native VLAN Membership Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Unauthorized" + }, + "eapol": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "title": "Disabled" + }, + "authentication_failure_fallback_mba": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "timeout": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Authentication Failure Fallback Mba" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Eapol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "dot1x" + }, + "service_profile": { + "type": "string", + "description": "QOS profile.", + "title": "Service Profile" + }, + "shape": { + "type": "object", + "properties": { + "rate": { + "type": "string", + "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Shape" + }, + "qos": { + "type": "object", + "properties": { + "trust": { + "type": "string", + "enum": [ + "dscp", + "cos", + "disabled" + ], + "title": "Trust" + }, + "dscp": { + "type": "integer", + "description": "DSCP value.", + "title": "DSCP" + }, + "cos": { + "type": "integer", + "description": "COS value.", + "title": "COS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + }, + "spanning_tree_bpdufilter": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpdufilter" + }, + "spanning_tree_bpduguard": { + "type": "string", + "enum": [ + "enabled", + "disabled", + "True", + "False", + "true", + "false" + ], + "title": "Spanning Tree Bpduguard" + }, + "spanning_tree_guard": { + "type": "string", + "enum": [ + "loop", + "root", + "disabled" + ], + "title": "Spanning Tree Guard" + }, + "spanning_tree_portfast": { + "type": "string", + "enum": [ + "edge", + "network" + ], + "title": "Spanning Tree Portfast" + }, + "vmtracer": { + "type": "boolean", + "title": "VMTracer" + }, + "priority_flow_control": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "priorities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "title": "Priority" + }, + "no_drop": { + "type": "boolean", + "title": "No Drop" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "priority" + ] + }, + "title": "Priorities" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Priority Flow Control" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Interval in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Policy Based Routing Policy-map name.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + }, + "qos": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Quality of Service Policy-map name.", + "title": "Input" + } + }, + "required": [ + "input" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "QOS" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "mpls": { + "type": "object", + "properties": { + "ip": { + "type": "boolean", + "title": "IP" + }, + "ldp": { + "type": "object", + "properties": { + "interface": { + "type": "boolean", + "title": "Interface" + }, + "igp_sync": { + "type": "boolean", + "title": "IGP Sync" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LDP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MPLS" + }, + "lacp_timer": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "fast", + "normal" + ], + "title": "Mode" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 3000, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "LACP Timer" + }, + "lacp_port_priority": { + "type": "integer", + "minimum": 0, + "maximum": 65535, + "title": "LACP Port Priority" + }, + "transceiver": { + "type": "object", + "properties": { + "frequency": { + "type": "string", + "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", + "title": "Frequency" + }, + "frequency_unit": { + "type": "string", + "enum": [ + "ghz" + ], + "description": "Unit of Transceiver Laser Frequency.", + "title": "Frequency Unit" + }, + "media": { + "type": "object", + "properties": { + "override": { + "type": "string", + "description": "Transceiver type.", + "title": "Override" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Media" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Transceiver" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "traffic_policy": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Ingress traffic policy.", + "title": "Input" + }, + "output": { + "type": "string", + "description": "Egress traffic policy.", + "title": "Output" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traffic Policy" + }, + "bgp": { + "type": "object", + "properties": { + "session_tracker": { + "type": "string", + "description": "Name of session tracker.", + "title": "Session Tracker" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "peer": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer" + }, + "peer_interface": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Interface" + }, + "peer_type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Peer Type" + }, + "sflow": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "egress": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "unmodified_enable": { + "type": "boolean", + "title": "Unmodified Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Egress" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow" + }, + "sync_e": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "title": "Enable" + }, + "priority": { + "type": "string", + "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", + "title": "Priority" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync E" + }, + "port_profile": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Port Profile" + }, + "uc_tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "min", + "max" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Uc TX Queues" + }, + "tx_queues": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "TX-Queue ID.", + "title": "ID" + }, + "random_detect": { + "type": "object", + "properties": { + "ecn": { + "description": "Explicit Congestion Notification.", + "type": "object", + "properties": { + "count": { + "type": "boolean", + "description": "Enable counter for random-detect ECNs.", + "title": "Count" + }, + "threshold": { + "type": "object", + "properties": { + "units": { + "type": "string", + "enum": [ + "segments", + "bytes", + "kbytes", + "mbytes", + "milliseconds" + ], + "description": "Indicate the units to be used for the threshold values.", + "title": "Units" + }, + "min": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN minimum-threshold.", + "title": "Min" + }, + "max": { + "type": "integer", + "minimum": 1, + "maximum": 256000000, + "description": "Set the random-detect ECN maximum-threshold.", + "title": "Max" + }, + "max_probability": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Set the random-detect ECN max-mark-probability.", + "title": "Max Probability" + }, + "weight": { + "type": "integer", + "minimum": 0, + "maximum": 15, + "description": "Set the random-detect ECN weight.", + "title": "Weight" + } + }, + "required": [ + "units", + "max", + "max_probability" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ecn" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Random Detect" + } + }, + "required": [ + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "TX Queues" + }, + "vrrp_ids": { + "type": "array", + "description": "VRRP model.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "validate_state": { + "type": "boolean", + "description": "Set to false to disable interface validation by the `eos_validate_state` role.", + "title": "Validate State" + }, + "switchport": { + "type": "object", + "properties": { + "port_security": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "mac_address_maximum": { + "type": "object", + "description": "Maximum number of MAC addresses allowed on the interface.", + "properties": { + "disabled": { + "type": "boolean", + "description": "Disable port level check for port security (only in violation 'shutdown' mode).", + "title": "Disabled" + }, + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "description": "MAC address limit.", + "title": "Limit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address Maximum" + }, + "violation": { + "type": "object", + "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", + "properties": { + "mode": { + "type": "string", + "enum": [ + "shutdown", + "protect" + ], + "description": "Configure port security mode.", + "title": "Mode" + }, + "protect_log": { + "type": "boolean", + "description": "Log new addresses seen after limit is reached in protect mode.", + "title": "Protect Log" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Violation" + }, + "vlan_default_mac_address_maximum": { + "type": "integer", + "minimum": 0, + "maximum": 1000, + "description": "Default maximum MAC addresses for all VLANs on this interface.", + "title": "VLAN Default MAC Address Maximum" + }, + "vlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "range": { + "type": "string", + "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", + "title": "Range" + }, + "mac_address_maximum": { + "type": "integer", + "title": "MAC Address Maximum" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "range" + ] + }, + "title": "VLANs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Port Security" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "profile" + ] + }, + "title": "Port Profiles" + }, + "ptp": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "profile": { + "type": "string", + "enum": [ + "aes67", + "smpte2059-2", + "aes67-r16-2016" + ], + "default": "aes67-r16-2016", + "title": "Profile" + }, + "domain": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Domain" + }, + "auto_clock_identity": { + "type": "boolean", + "default": true, + "title": "Auto Clock Identity" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP" + }, + "ptp_profiles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "PTP profile.", + "title": "Profile" + }, + "announce": { + "type": "object", + "description": "PTP announce interval.", + "properties": { + "interval": { + "type": "integer", + "minimum": -7, + "maximum": 4, + "title": "Interval" + }, + "timeout": { + "type": "integer", + "minimum": 2, + "maximum": 255, + "title": "Timeout" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Announce" + }, + "delay_req": { + "type": "integer", + "minimum": -7, + "maximum": 8, + "title": "Delay Req" + }, + "sync_message": { + "type": "object", + "description": "PTP sync message interval.", + "properties": { + "interval": { + "type": "integer", + "minimum": -7, + "maximum": 3, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sync Message" + }, + "transport": { + "type": "string", + "enum": [ + "ipv4" + ], + "title": "Transport" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "default": [ + { + "announce": { + "interval": 0, + "timeout": 3 + }, + "delay_req": -3, + "profile": "aes67-r16-2016", + "sync_message": { + "interval": -3 + }, + "transport": "ipv4" + }, + { + "announce": { + "interval": -2, + "timeout": 3 + }, + "delay_req": -4, + "profile": "smpte2059-2", + "sync_message": { + "interval": -4 + }, + "transport": "ipv4" + }, + { + "announce": { + "interval": 2, + "timeout": 3 + }, + "delay_req": 0, + "profile": "aes67", + "sync_message": { + "interval": 0 + }, + "transport": "ipv4" + } + ], + "title": "PTP Profiles" + }, + "ptp_settings": { + "type": "object", + "description": "Common PTP settings.\n`ptp_settings` replaces the old `ptp` key. `ptp_settings` takes precedence.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "profile": { + "type": "string", + "enum": [ + "aes67", + "smpte2059-2", + "aes67-r16-2016" + ], + "default": "aes67-r16-2016", + "title": "Profile" + }, + "domain": { + "type": "integer", + "minimum": 0, + "maximum": 255, + "title": "Domain" + }, + "auto_clock_identity": { + "type": "boolean", + "default": true, + "title": "Auto Clock Identity" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PTP Settings" + }, + "queue_monitor_length": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "notifying": { + "type": "boolean", + "description": "If True, `eos_designs` will configure `queue-monitor length notifying` according to the\n`platform_settings.[].feature_support.queue_monitor_length_notify` setting.\n", + "title": "Notifying" + }, + "default_thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "description": "Default high threshold for Ethernet Interfaces.\n", + "title": "High" + }, + "low": { + "type": "integer", + "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Thresholds" + }, + "log": { + "type": "integer", + "description": "Logging interval in seconds.", + "title": "Log" + }, + "cpu": { + "type": "object", + "properties": { + "thresholds": { + "type": "object", + "properties": { + "high": { + "type": "integer", + "title": "High" + }, + "low": { + "type": "integer", + "title": "Low" + } + }, + "required": [ + "high" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Thresholds" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "CPU" + }, + "tx_latency": { + "type": "boolean", + "description": "Enable tx-latency mode.", + "title": "TX Latency" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Queue Monitor Length" + }, + "redundancy": { + "type": "object", + "description": "Redundancy for chassis platforms with dual supervisors | Optional.", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "sso", + "rpr" + ], + "title": "Protocol" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Redundancy" + }, + "serial_number": { + "description": "Serial Number of the device.\nUsed for documentation purpose in the fabric documentation as can also be used by the 'eos_config_deploy_cvp' role.\n\"serial_number\" can also be set directly under node type settings.\nIf both are set, the value under node type settings takes precedence.\n", + "type": "string", + "title": "Serial Number" + }, + "sflow_settings": { + "type": "object", + "description": "sFlow settings.\nThe sFlow process will only be configured if any interface is enabled for sFlow.\nFor default enabling of sFlow for various interface types across the fabric see `fabric_sflow`.", + "properties": { + "sample": { + "type": "object", + "properties": { + "rate": { + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "description": "Packet sampling rate that defines the average number of ingress packets that pass through an interface for every packet that is sampled.\nA rate of 16384 corresponds to an average sample of one per 16384 packets.", + "title": "Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sample" + }, + "destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "destination": { + "type": "string", + "description": "sFlow destination name or IP address.", + "title": "Destination" + }, + "port": { + "type": "integer", + "description": "UDP Port number. The default port number for sFlow is 6343.", + "minimum": 1, + "maximum": 65535, + "title": "Port" + }, + "vrf": { + "type": "string", + "description": "If not set, the VRF is automatically picked up from the global setting `default_mgmt_method`.\nThe value of `vrf` will be interpreted according to these rules:\n- `use_mgmt_interface_vrf` will configure the sFlow destination under the VRF set with `mgmt_interface_vrf` and set the `mgmt_interface` as sFlow source-interface.\n An error will be raised if `mgmt_ip` or `ipv6_mgmt_ip` are not configured for the device.\n- `use_inband_mgmt_vrf` will configure the sFlow destination under the VRF set with `inband_mgmt_vrf` and set the `inband_mgmt_interface` as sFlow source-interface.\n An error will be raised if inband management is not configured for the device.\n- Any other string will be used directly as the VRF name. Remember to set the `sflow_settings.vrfs[].source_interface` if needed.", + "title": "VRF" + } + }, + "required": [ + "destination" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Destinations" + }, + "vrfs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "source_interface": { + "type": "string", + "description": "Source interface to use for sFlow destinations in this VRF.\nIf set for the VRFs defined by `mgmt_interface_vrf` or `inband_mgmt_vrf`, this setting will take precedence.", + "title": "Source Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Sflow Settings" + }, + "shutdown_bgp_towards_undeployed_peers": { + "type": "boolean", + "default": false, + "description": "When a device is set undeployed using `is_deployed: false` and `shutdown_bgp_towards_undeployed_peers` key is set to true, the BGP neighborship is shutdown on the peer.", + "title": "Shutdown BGP Towards Undeployed Peers" + }, + "shutdown_interfaces_towards_undeployed_peers": { + "type": "boolean", + "default": false, + "description": "- It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.\n\n```yaml\n# Use at the host level\nis_deployed: < true or false or default -> true >\n```\n\n- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.\n- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.\n- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.\n- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.\n- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network.\n", + "title": "Shutdown Interfaces Towards Undeployed Peers" + }, + "snmp_settings": { + "type": "object", + "description": "SNMP settings.\nFor SNMP local-interfaces see \"source_interfaces.snmp\".\nConfiguration of remote SNMP engine IDs are currently only possible using `structured_config`.", + "properties": { + "contact": { + "type": "string", + "description": "SNMP contact.", + "title": "Contact" + }, + "location": { + "type": "boolean", + "default": false, + "description": "Set SNMP location. Formatted as \" \".", + "title": "Location" + }, + "vrfs": { + "type": "array", + "description": "Enable/disable SNMP for one or more VRFs.\nCan be used in combination with \"enable_mgmt_interface_vrf\" and \"enable_inband_mgmt_vrf\".", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "enable": { + "type": "boolean", + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "VRFs" + }, + "enable_mgmt_interface_vrf": { + "type": "boolean", + "description": "Enable/disable SNMP for the VRF set with \"mgmt_interface_vrf\".\nIgnored if 'mgmt_ip' or 'ipv6_mgmt_ip' are not configured for the device.\nCan be used in combination with \"vrfs\" and \"enable_inband_mgmt_vrf\".", + "title": "Enable Management Interface VRF" + }, + "enable_inband_mgmt_vrf": { + "type": "boolean", + "description": "Enable/disable SNMP for the VRF set with \"inband_mgmt_vrf\".\nIgnored if inband management is not configured for the device.\nCan be used in combination with \"vrfs\" and \"enable_mgmt_interface_vrf\".", + "title": "Enable Inband Management VRF" + }, + "compute_local_engineid": { + "type": "boolean", + "default": false, + "description": "Generate a local engineId for SNMP using the 'compute_local_engineid_source' method.\n", + "title": "Compute Local Engineid" + }, + "compute_local_engineid_source": { + "type": "string", + "default": "hostname_and_ip", + "description": "`compute_local_engineid_source` supports:\n- `hostname_and_ip` generate a local engineId for SNMP by hashing via SHA1\n the string generated via the concatenation of the hostname plus the management IP.\n {{ inventory_hostname }} + {{ switch.mgmt_ip }}.\n- `system_mac` generate the switch default engine id for AVD usage.\n To use this, `system_mac_address` MUST be set for the device.\n The formula is f5717f + system_mac_address + 00.\n", + "enum": [ + "hostname_and_ip", + "system_mac" + ], + "title": "Compute Local Engineid Source" + }, + "compute_v3_user_localized_key": { + "type": "boolean", + "default": false, + "description": "Requires compute_local_engineid to be `true`.\nIf enabled, the SNMPv3 passphrases for auth and priv are transformed using RFC 2574, matching the value they would take in EOS CLI.\nThe algorithm requires a local engineId, which is unknown to AVD, hence the necessity to generate one beforehand.\n", + "title": "Compute V3 User Localized Key" + }, + "users": { + "type": "array", + "description": "Configuration of local SNMP users.\nConfiguration of remote SNMP users are currently only possible using `structured_config`.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Username.", + "title": "Name" + }, + "group": { + "type": "string", + "description": "Group name.", + "title": "Group" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "auth": { + "type": "string", + "enum": [ + "md5", + "sha", + "sha256", + "sha384", + "sha512" + ], + "title": "Auth" + }, + "auth_passphrase": { + "type": "string", + "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'auth' to be set.", + "title": "Auth Passphrase" + }, + "priv": { + "type": "string", + "enum": [ + "des", + "aes", + "aes192", + "aes256" + ], + "title": "Priv" + }, + "priv_passphrase": { + "type": "string", + "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'priv' to be set.", + "title": "Priv Passphrase" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host IP address or name.", + "title": "Host" + }, + "vrf": { + "type": "string", + "description": "VRF Name.\nCan be used in combination with \"use_mgmt_interface_vrf\" and \"use_inband_mgmt_vrf\" to configure the SNMP host under multiple VRFs.", + "title": "VRF" + }, + "use_mgmt_interface_vrf": { + "type": "boolean", + "description": "Configure the SNMP host under the VRF set with \"mgmt_interface_vrf\". Ignored if 'mgmt_ip' or 'ipv6_mgmt_ip' are not configured for the device, so if the host is only configured with this VRF, the host will not be configured at all. Can be used in combination with \"vrf\" and \"use_inband_mgmt_vrf\" to configure the SNMP host under multiple VRFs.", + "title": "Use Management Interface VRF" + }, + "use_inband_mgmt_vrf": { + "type": "boolean", + "description": "Configure the SNMP host under the VRF set with \"inband_mgmt_vrf\". Ignored if inband management is not configured for the device, so if the host is only configured with this VRF, the host will not be configured at all. Can be used in combination with \"vrf\" and \"use_mgmt_interface_vrf\" to configure the SNMP host under multiple VRFs.", + "title": "Use Inband Management VRF" + }, + "version": { + "type": "string", + "enum": [ + "1", + "2c", + "3" + ], + "title": "Version" + }, + "community": { + "type": "string", + "description": "Community name.", + "title": "Community" + }, + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "Username" + }, + "authentication_level": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication Level" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Users" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Hosts" + }, + "communities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Community name.", + "title": "Name" + }, + "access": { + "type": "string", + "enum": [ + "ro", + "rw" + ], + "title": "Access" + }, + "access_list_ipv4": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv4" + }, + "access_list_ipv6": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Access List IPv6" + }, + "view": { + "type": "string", + "title": "View" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Communities" + }, + "ipv4_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv4 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv4 Acls" + }, + "ipv6_acls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "IPv6 access list name.", + "title": "Name" + }, + "vrf": { + "type": "string", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "IPv6 Acls" + }, + "views": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "SNMP view name.", + "title": "Name" + }, + "mib_family_name": { + "type": "string", + "title": "MIB Family Name" + }, + "included": { + "type": "boolean", + "title": "Included" + }, + "MIB_family_name": { + "type": "string", + "title": "MIB Family Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Views" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Group name.", + "title": "Name" + }, + "version": { + "type": "string", + "enum": [ + "v1", + "v2c", + "v3" + ], + "title": "Version" + }, + "authentication": { + "type": "string", + "enum": [ + "auth", + "noauth", + "priv" + ], + "title": "Authentication" + }, + "read": { + "type": "string", + "description": "Read view.", + "title": "Read" + }, + "write": { + "type": "string", + "description": "Write view.", + "title": "Write" + }, + "notify": { + "type": "string", + "description": "Notify view.", + "title": "Notify" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Groups" + }, + "traps": { + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "default": false, + "description": "Enable or disable all snmp-traps.\n", + "title": "Enable" + }, + "snmp_traps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "default": true, + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Snmp Traps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Traps" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Snmp Settings" + }, + "source_interfaces": { + "type": "object", + "description": "Configure source-interfaces based on the management interfaces set for other `eos_designs` data models.\nBy default, no source-interfaces will be configured. They can still be configured manually using `eos_cli_config_gen` and custom structured configuration.\nEOS supports a single source-interface per VRF, so an error will be raised in case of conflicts.\nErrors will also be raised if an interface is not found for a device.", + "properties": { + "domain_lookup": { + "type": "object", + "description": "IP Domain Lookup source-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Domain Lookup source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Domain Lookup source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Domain Lookup" + }, + "http_client": { + "type": "object", + "description": "IP HTTP Client source-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure an IP HTTP Client source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure an IP HTTP Client source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "HTTP Client" + }, + "radius": { + "type": "object", + "description": "IP Radius source-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Radius source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Radius source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Radius" + }, + "snmp": { + "type": "object", + "description": "SNMP local-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure a SNMP local-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure a SNMP local-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Snmp" + }, + "ssh_client": { + "type": "object", + "description": "IP SSH Client source-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure an IP SSH Client source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure an IP SSH Client source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "SSH Client" + }, + "tacacs": { + "type": "object", + "description": "IP Tacacs source-interfaces.", + "properties": { + "mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Tacacs source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", + "title": "Management Interface" + }, + "inband_mgmt_interface": { + "type": "boolean", + "description": "Configure an IP Tacacs source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", + "title": "Inband Management Interface" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tacacs" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Interfaces" + }, + "svi_profiles": { + "type": "array", + "description": "Profiles to share common settings for SVIs under `.[].vrfs.svis`.\nKeys are the same used under SVIs. Keys defined under SVIs take precedence.\nNote: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:\n1. svi.nodes[inventory_hostname].structured_config\n2. svi_profile.nodes[inventory_hostname].structured_config\n3. svi_parent_profile.nodes[inventory_hostname].structured_config\n4. svi.structured_config\n5. svi_profile.structured_config\n6. svi_parent_profile.structured_config\n", + "items": { + "type": "object", + "properties": { + "profile": { + "type": "string", + "description": "Profile name.", + "title": "Profile" + }, + "parent_profile": { + "type": "string", + "description": "Parent SVI profile name to apply.\nsvi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).\n", + "title": "Parent Profile" + }, + "nodes": { + "type": "array", + "description": "Define node specific configuration, such as unique IP addresses.\nAny keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.\n", + "items": { + "type": "object", + "properties": { + "node": { + "type": "string", + "description": "l3_leaf inventory hostname.", + "title": "Node" + }, + "name": { + "type": "string", + "description": "VLAN name.", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "description": "Enable or disable interface.", + "title": "Enabled" + }, + "description": { + "type": "string", + "description": "SVI description. By default set to VLAN name.\n", + "title": "Description" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.", + "title": "IP Address" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.", + "title": "IPv6 Address" + }, + "ipv6_enable": { + "type": "boolean", + "description": "Explicitly enable/disable link-local IPv6 addressing.", + "title": "IPv6 Enable" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.\nIPv4 VXLAN Anycast IP address.\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n", + "title": "IP Address Virtual" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional).\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "IPv6 VXLAN Anycast IP addresses.\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "description": "Secondary IPv4 VXLAN Anycast IP addresses.", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n", + "items": { + "type": "string", + "description": "IPv4_address/Mask or IPv4_address.\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n" + }, + "title": "IP Virtual Router Addresses" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n", + "items": { + "type": "string", + "description": "IPv6_address." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv4_acl_in": { + "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", + "type": "string", + "title": "IPv4 Acl In" + }, + "ipv4_acl_out": { + "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", + "type": "string", + "title": "IPv4 Acl Out" + }, + "ip_helpers": { + "type": "array", + "description": "IP helper for DHCP relay.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IPv4 DHCP server IP.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface name to originate DHCP relay packets to DHCP server.", + "title": "Source Interface" + }, + "source_vrf": { + "type": "string", + "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.", + "title": "Source VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "vni_override": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n", + "title": "Vni Override" + }, + "rt_override": { + "type": "string", + "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", + "title": "Rt Override" + }, + "rd_override": { + "type": "string", + "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", + "title": "Rd Override" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n" + }, + "title": "Trunk Groups" + }, + "evpn_l2_multicast": { + "type": "object", + "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\nRequires `evpn_multicast` to also be set to `true`.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN L2 Multicast" + }, + "evpn_l3_multicast": { + "type": "object", + "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\nRequires `evpn_multicast` to also be set to `true`.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN L3 Multicast" + }, + "igmp_snooping_enabled": { + "type": "boolean", + "description": "Enable IGMP Snooping (Enabled by default on EOS).", + "title": "IGMP Snooping Enabled" + }, + "igmp_snooping_querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Will be enabled automatically if evpn_l2_multicast is enabled.", + "title": "Enabled" + }, + "source_address": { + "type": "string", + "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n", + "title": "Source Address" + }, + "version": { + "type": "integer", + "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).", + "enum": [ + 1, + 2, + 3 + ], + "title": "Version" + }, + "fast_leave": { + "type": "boolean", + "description": "Enable IGMP snooping fast-leave feature.", + "title": "Fast Leave" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IGMP Snooping Querier" + }, + "vxlan": { + "type": "boolean", + "default": true, + "description": "Extend this SVI over VXLAN.", + "title": "VxLAN" + }, + "spanning_tree_priority": { + "type": "integer", + "description": "Setting spanning-tree priority per VLAN is only supported with `spanning_tree_mode: rapid-pvst` under node type settings.\nThe default priority for rapid-PVST is set under the node type settings with `spanning_tree_priority` (default=32768).", + "title": "Spanning Tree Priority" + }, + "mtu": { + "type": "integer", + "description": "Interface MTU.", + "title": "MTU" + }, + "ospf": { + "type": "object", + "description": "OSPF interface configuration.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "point_to_point": { + "type": "boolean", + "default": true, + "title": "Point To Point" + }, + "area": { + "type": "string", + "description": "OSPF area ID.", + "default": "0", + "title": "Area" + }, + "cost": { + "type": "integer", + "description": "OSPF link cost.", + "title": "Cost" + }, + "authentication": { + "type": "string", + "enum": [ + "simple", + "message-digest" + ], + "title": "Authentication" + }, + "simple_auth_key": { + "type": "string", + "description": "Password used with simple authentication.", + "title": "Simple Auth Key" + }, + "message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "default": "sha512", + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Type 7 encrypted key.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Message Digest Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "OSPF" + }, + "bgp": { + "type": "object", + "properties": { + "structured_config": { + "type": "object", + "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=].\nThis configuration will not be applied to vlan aware bundles.\n", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", + "title": "EOS CLI" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n", + "title": "Raw EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n", + "properties": { + "name": { + "type": "string", + "description": "VLAN interface name like \"Vlan123\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "arp_aging_timeout": { + "type": "integer", + "description": "In seconds.", + "minimum": 1, + "maximum": 65535, + "title": "ARP Aging Timeout" + }, + "arp_cache_dynamic_capacity": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "ARP Cache Dynamic Capacity" + }, + "arp_gratuitous_accept": { + "type": "boolean", + "title": "ARP Gratuitous Accept" + }, + "arp_monitor_mac_address": { + "type": "boolean", + "title": "ARP Monitor MAC Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ip_directed_broadcast": { + "type": "boolean", + "title": "IP Directed Broadcast" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 address or IPv4_address/Mask." + }, + "title": "IP Virtual Router Addresses" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address Virtual" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_igmp": { + "type": "boolean", + "title": "IP IGMP" + }, + "ip_igmp_version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "title": "IP IGMP Version" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "ip_helpers": { + "type": "array", + "description": "List of DHCP servers.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IP address or hostname of DHCP server.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface used as source for forwarded DHCP packets.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF where DHCP server can be reached.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "IP DHCP Relay All Subnets" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_virtual_router_address": { + "type": "string", + "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", + "deprecated": true, + "title": "IPv6 Virtual Router Address" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", + "items": { + "type": "string", + "description": "IPv6 address or IPv6_address/Mask." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_other_config_flag": { + "type": "boolean", + "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", + "title": "IPv6 ND Other Config Flag" + }, + "ipv6_nd_cache": { + "type": "object", + "description": "IPv6 neighbor cache options.", + "properties": { + "dynamic_capacity": { + "type": "integer", + "description": "Capacity of dynamic cache entries.", + "minimum": 0, + "maximum": 4294967295, + "title": "Dynamic Capacity" + }, + "expire": { + "type": "integer", + "description": "Cache entries expirery in seconds.", + "minimum": 1, + "maximum": 65535, + "title": "Expire" + }, + "refresh_always": { + "type": "boolean", + "description": "Force refresh on cache expiry.", + "title": "Refresh Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 ND Cache" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "ipv6_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "IPv6 DHCP Relay All Subnets" + }, + "access_group_in": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group Out" + }, + "multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password used for simple authentication.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "description": "Keys used for message-digest authentication.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "no_autostate": { + "type": "boolean", + "title": "No Autostate" + }, + "vrrp_ids": { + "type": "array", + "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "vrrp": { + "type": "object", + "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", + "deprecated": true, + "properties": { + "virtual_router": { + "type": "string", + "description": "Virtual Router ID.", + "title": "Virtual Router" + }, + "priority": { + "type": "integer", + "description": "Instance priority.", + "title": "Priority" + }, + "advertisement_interval": { + "type": "integer", + "title": "Advertisement Interval" + }, + "preempt_delay_minimum": { + "type": "integer", + "title": "Preempt Delay Minimum" + }, + "ipv4": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VRRP" + }, + "ip_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Attached Host Route Export" + }, + "ipv6_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Administrative distance for generated routes.", + "title": "Distance" + }, + "prefix_length": { + "type": "integer", + "minimum": 0, + "maximum": 128, + "description": "Prefix length for generated routes.", + "title": "Prefix Length" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Attached Host Route Export" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Minimum RX hold time in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Name of policy-map used for policy based routing.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of VLANs as string.", + "title": "PVLAN Mapping" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Key only used for documentation or validation purposes.", + "title": "Tags" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "node" + ] + }, + "title": "Nodes" + }, + "name": { + "type": "string", + "description": "VLAN name.", + "title": "Name" + }, + "enabled": { + "type": "boolean", + "description": "Enable or disable interface.", + "title": "Enabled" + }, + "description": { + "type": "string", + "description": "SVI description. By default set to VLAN name.\n", + "title": "Description" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.", + "title": "IP Address" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.", + "title": "IPv6 Address" + }, + "ipv6_enable": { + "type": "boolean", + "description": "Explicitly enable/disable link-local IPv6 addressing.", + "title": "IPv6 Enable" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.\nIPv4 VXLAN Anycast IP address.\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n", + "title": "IP Address Virtual" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional).\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "IPv6 VXLAN Anycast IP addresses.\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "description": "Secondary IPv4 VXLAN Anycast IP addresses.", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n", + "items": { + "type": "string", + "description": "IPv4_address/Mask or IPv4_address.\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n" + }, + "title": "IP Virtual Router Addresses" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n", + "items": { + "type": "string", + "description": "IPv6_address." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv4_acl_in": { + "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", + "type": "string", + "title": "IPv4 Acl In" + }, + "ipv4_acl_out": { + "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", + "type": "string", + "title": "IPv4 Acl Out" + }, + "ip_helpers": { + "type": "array", + "description": "IP helper for DHCP relay.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IPv4 DHCP server IP.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface name to originate DHCP relay packets to DHCP server.", + "title": "Source Interface" + }, + "source_vrf": { + "type": "string", + "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.", + "title": "Source VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "vni_override": { + "type": "integer", + "minimum": 1, + "maximum": 16777215, + "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n", + "title": "Vni Override" + }, + "rt_override": { + "type": "string", + "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", + "title": "Rt Override" + }, + "rd_override": { + "type": "string", + "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", + "title": "Rd Override" + }, + "trunk_groups": { + "type": "array", + "items": { + "type": "string", + "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n" + }, + "title": "Trunk Groups" + }, + "evpn_l2_multicast": { + "type": "object", + "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\nRequires `evpn_multicast` to also be set to `true`.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN L2 Multicast" + }, + "evpn_l3_multicast": { + "type": "object", + "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\nRequires `evpn_multicast` to also be set to `true`.\n", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "EVPN L3 Multicast" + }, + "igmp_snooping_enabled": { + "type": "boolean", + "description": "Enable IGMP Snooping (Enabled by default on EOS).", + "title": "IGMP Snooping Enabled" + }, + "igmp_snooping_querier": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Will be enabled automatically if evpn_l2_multicast is enabled.", + "title": "Enabled" + }, + "source_address": { + "type": "string", + "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n", + "title": "Source Address" + }, + "version": { + "type": "integer", + "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).", + "enum": [ + 1, + 2, + 3 + ], + "title": "Version" + }, + "fast_leave": { + "type": "boolean", + "description": "Enable IGMP snooping fast-leave feature.", + "title": "Fast Leave" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IGMP Snooping Querier" + }, + "vxlan": { + "type": "boolean", + "default": true, + "description": "Extend this SVI over VXLAN.", + "title": "VxLAN" + }, + "spanning_tree_priority": { + "type": "integer", + "description": "Setting spanning-tree priority per VLAN is only supported with `spanning_tree_mode: rapid-pvst` under node type settings.\nThe default priority for rapid-PVST is set under the node type settings with `spanning_tree_priority` (default=32768).", + "title": "Spanning Tree Priority" + }, + "mtu": { + "type": "integer", + "description": "Interface MTU.", + "title": "MTU" + }, + "ospf": { + "type": "object", + "description": "OSPF interface configuration.", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "point_to_point": { + "type": "boolean", + "default": true, + "title": "Point To Point" + }, + "area": { + "type": "string", + "description": "OSPF area ID.", + "default": "0", + "title": "Area" + }, + "cost": { + "type": "integer", + "description": "OSPF link cost.", + "title": "Cost" + }, + "authentication": { + "type": "string", + "enum": [ + "simple", + "message-digest" + ], + "title": "Authentication" + }, + "simple_auth_key": { + "type": "string", + "description": "Password used with simple authentication.", + "title": "Simple Auth Key" + }, + "message_digest_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "default": "sha512", + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Type 7 encrypted key.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Message Digest Keys" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "OSPF" + }, + "bgp": { + "type": "object", + "properties": { + "structured_config": { + "type": "object", + "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=].\nThis configuration will not be applied to vlan aware bundles.\n", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "rd": { + "description": "Route distinguisher.", + "type": "string", + "title": "Rd" + }, + "rd_evpn_domain": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "rd": { + "type": "string", + "description": "Route distinguisher.", + "title": "Rd" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Rd EVPN Domain" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", + "title": "EOS CLI" + }, + "route_targets": { + "type": "object", + "properties": { + "both": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Both" + }, + "import": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Import" + }, + "export": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Export" + }, + "import_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import EVPN Domains" + }, + "export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Export EVPN Domains" + }, + "import_export_evpn_domains": { + "type": "array", + "items": { + "type": "object", + "properties": { + "domain": { + "type": "string", + "enum": [ + "remote", + "all" + ], + "title": "Domain" + }, + "route_target": { + "type": "string", + "title": "Route Target" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Export EVPN Domains" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Route Targets" + }, + "redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Redistribute Routes" + }, + "no_redistribute_routes": { + "type": "array", + "items": { + "type": "string" + }, + "title": "No Redistribute Routes" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n", + "title": "Raw EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BGP" + }, + "raw_eos_cli": { + "type": "string", + "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n", + "title": "Raw EOS CLI" + }, + "structured_config": { + "type": "object", + "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n", + "properties": { + "name": { + "type": "string", + "description": "VLAN interface name like \"Vlan123\".", + "title": "Name" + }, + "description": { + "type": "string", + "title": "Description" + }, + "logging": { + "type": "object", + "properties": { + "event": { + "type": "object", + "properties": { + "link_status": { + "type": "boolean", + "title": "Link Status" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Event" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Logging" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + }, + "vrf": { + "type": "string", + "description": "VRF name.", + "title": "VRF" + }, + "arp_aging_timeout": { + "type": "integer", + "description": "In seconds.", + "minimum": 1, + "maximum": 65535, + "title": "ARP Aging Timeout" + }, + "arp_cache_dynamic_capacity": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "ARP Cache Dynamic Capacity" + }, + "arp_gratuitous_accept": { + "type": "boolean", + "title": "ARP Gratuitous Accept" + }, + "arp_monitor_mac_address": { + "type": "boolean", + "title": "ARP Monitor MAC Address" + }, + "ip_proxy_arp": { + "type": "boolean", + "title": "IP Proxy ARP" + }, + "ip_directed_broadcast": { + "type": "boolean", + "title": "IP Directed Broadcast" + }, + "ip_address": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address" + }, + "ip_address_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Secondaries" + }, + "ip_virtual_router_addresses": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4 address or IPv4_address/Mask." + }, + "title": "IP Virtual Router Addresses" + }, + "ip_address_virtual": { + "type": "string", + "description": "IPv4_address/Mask.", + "title": "IP Address Virtual" + }, + "ip_address_virtual_secondaries": { + "type": "array", + "items": { + "type": "string", + "description": "IPv4_address/Mask." + }, + "title": "IP Address Virtual Secondaries" + }, + "ip_verify_unicast_source_reachable_via": { + "type": "string", + "enum": [ + "any", + "rx" + ], + "title": "IP Verify Unicast Source Reachable Via" + }, + "ip_igmp": { + "type": "boolean", + "title": "IP IGMP" + }, + "ip_igmp_version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "title": "IP IGMP Version" + }, + "ip_igmp_host_proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Multicast Address.", + "title": "Group" + }, + "exclude": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Exclude" + }, + "include": { + "type": "array", + "description": "The same source must not be present both in `exclude` and `include` list.", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "source" + ] + }, + "title": "Include" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "group" + ] + }, + "title": "Groups" + }, + "report_interval": { + "type": "integer", + "minimum": 1, + "maximum": 31744, + "description": "Time interval between unsolicited reports.", + "title": "Report Interval" + }, + "access_lists": { + "type": "array", + "description": "Non-standard Access List name.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Access Lists" + }, + "version": { + "type": "integer", + "minimum": 1, + "maximum": 3, + "description": "IGMP version on IGMP host-proxy interface.", + "title": "Version" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP IGMP Host Proxy" + }, + "ip_helpers": { + "type": "array", + "description": "List of DHCP servers.", + "items": { + "type": "object", + "properties": { + "ip_helper": { + "type": "string", + "description": "IP address or hostname of DHCP server.", + "title": "IP Helper" + }, + "source_interface": { + "type": "string", + "description": "Interface used as source for forwarded DHCP packets.", + "title": "Source Interface" + }, + "vrf": { + "type": "string", + "description": "VRF where DHCP server can be reached.", + "title": "VRF" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ip_helper" + ] + }, + "title": "IP Helpers" + }, + "ip_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", + "title": "IP DHCP Relay All Subnets" + }, + "ip_nat": { + "type": "object", + "properties": { + "destination": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "pool_name": { + "type": "string", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "pool_name", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Destination" + }, + "source": { + "type": "object", + "properties": { + "dynamic": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "nat_type": { + "type": "string", + "enum": [ + "overload", + "pool", + "pool-address-only", + "pool-full-cone" + ], + "title": "Nat Type" + }, + "pool_name": { + "type": "string", + "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", + "title": "Pool Name" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + } + }, + "required": [ + "nat_type", + "access_list" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Dynamic" + }, + "static": { + "type": "array", + "items": { + "type": "object", + "properties": { + "access_list": { + "type": "string", + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Access List" + }, + "comment": { + "type": "string", + "title": "Comment" + }, + "direction": { + "type": "string", + "enum": [ + "egress", + "ingress" + ], + "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", + "title": "Direction" + }, + "group": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "'access_list' and 'group' are mutual exclusive.", + "title": "Group" + }, + "original_ip": { + "type": "string", + "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", + "title": "Original IP" + }, + "original_port": { + "type": "integer", + "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", + "minimum": 1, + "maximum": 65535, + "title": "Original Port" + }, + "priority": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "title": "Priority" + }, + "protocol": { + "type": "string", + "enum": [ + "udp", + "tcp" + ], + "title": "Protocol" + }, + "translated_ip": { + "type": "string", + "description": "IPv4 address.", + "title": "Translated IP" + }, + "translated_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "requires 'original_port'.", + "title": "Translated Port" + } + }, + "required": [ + "translated_ip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Nat" + }, + "ipv6_enable": { + "type": "boolean", + "title": "IPv6 Enable" + }, + "ipv6_address": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address" + }, + "ipv6_address_virtual": { + "type": "string", + "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", + "deprecated": true, + "title": "IPv6 Address Virtual" + }, + "ipv6_address_virtuals": { + "type": "array", + "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", + "items": { + "type": "string", + "description": "IPv6_address/Mask." + }, + "title": "IPv6 Address Virtuals" + }, + "ipv6_address_link_local": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Address Link Local" + }, + "ipv6_virtual_router_address": { + "type": "string", + "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", + "deprecated": true, + "title": "IPv6 Virtual Router Address" + }, + "ipv6_virtual_router_addresses": { + "type": "array", + "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", + "items": { + "type": "string", + "description": "IPv6 address or IPv6_address/Mask." + }, + "title": "IPv6 Virtual Router Addresses" + }, + "ipv6_nd_ra_disabled": { + "type": "boolean", + "title": "IPv6 ND RA Disabled" + }, + "ipv6_nd_managed_config_flag": { + "type": "boolean", + "title": "IPv6 ND Managed Config Flag" + }, + "ipv6_nd_other_config_flag": { + "type": "boolean", + "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", + "title": "IPv6 ND Other Config Flag" + }, + "ipv6_nd_cache": { + "type": "object", + "description": "IPv6 neighbor cache options.", + "properties": { + "dynamic_capacity": { + "type": "integer", + "description": "Capacity of dynamic cache entries.", + "minimum": 0, + "maximum": 4294967295, + "title": "Dynamic Capacity" + }, + "expire": { + "type": "integer", + "description": "Cache entries expirery in seconds.", + "minimum": 1, + "maximum": 65535, + "title": "Expire" + }, + "refresh_always": { + "type": "boolean", + "description": "Force refresh on cache expiry.", + "title": "Refresh Always" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 ND Cache" + }, + "ipv6_nd_prefixes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ipv6_prefix": { + "type": "string", + "description": "IPv6_address/Mask.", + "title": "IPv6 Prefix" + }, + "valid_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Valid Lifetime" + }, + "preferred_lifetime": { + "type": "string", + "description": "In seconds <0-4294967295> or infinite.", + "title": "Preferred Lifetime" + }, + "no_autoconfig_flag": { + "type": "boolean", + "title": "No Autoconfig Flag" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "ipv6_prefix" + ] + }, + "title": "IPv6 ND Prefixes" + }, + "ipv6_dhcp_relay_destinations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "DHCP server's IPv6 address.", + "title": "Address" + }, + "vrf": { + "type": "string", + "title": "VRF" + }, + "local_interface": { + "type": "string", + "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", + "title": "Local Interface" + }, + "source_address": { + "type": "string", + "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", + "title": "Source Address" + }, + "link_address": { + "type": "string", + "description": "Override the default link address specified in the relayed DHCP packet.", + "title": "Link Address" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "address" + ] + }, + "title": "IPv6 DHCP Relay Destinations" + }, + "ipv6_dhcp_relay_all_subnets": { + "type": "boolean", + "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", + "title": "IPv6 DHCP Relay All Subnets" + }, + "access_group_in": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group In" + }, + "access_group_out": { + "type": "string", + "description": "IPv4 access-list name.", + "title": "Access Group Out" + }, + "ipv6_access_group_in": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group In" + }, + "ipv6_access_group_out": { + "type": "string", + "description": "IPv6 access-list name.", + "title": "IPv6 Access Group Out" + }, + "multicast": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", + "title": "Boundary" + }, + "out": { + "type": "boolean", + "title": "Out" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "boundaries": { + "type": "array", + "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", + "items": { + "type": "object", + "properties": { + "boundary": { + "type": "string", + "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", + "title": "Boundary" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "boundary" + ] + }, + "title": "Boundaries" + }, + "source_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "administrative_distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Administrative Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Source Route Export" + }, + "static": { + "type": "boolean", + "title": "Static" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Multicast" + }, + "ospf_network_point_to_point": { + "type": "boolean", + "title": "OSPF Network Point To Point" + }, + "ospf_area": { + "type": "string", + "title": "OSPF Area" + }, + "ospf_cost": { + "type": "integer", + "title": "OSPF Cost" + }, + "ospf_authentication": { + "type": "string", + "enum": [ + "none", + "simple", + "message-digest" + ], + "title": "OSPF Authentication" + }, + "ospf_authentication_key": { + "type": "string", + "description": "Encrypted password used for simple authentication.", + "title": "OSPF Authentication Key" + }, + "ospf_message_digest_keys": { + "type": "array", + "description": "Keys used for message-digest authentication.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "description": "Encrypted password.", + "title": "Key" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "OSPF Message Digest Keys" + }, + "pim": { + "type": "object", + "properties": { + "ipv4": { + "type": "object", + "properties": { + "border_router": { + "type": "boolean", + "description": "Configure PIM border router. EOS default is false.", + "title": "Border Router" + }, + "dr_priority": { + "type": "integer", + "minimum": 0, + "maximum": 429467295, + "title": "DR Priority" + }, + "sparse_mode": { + "type": "boolean", + "title": "Sparse Mode" + }, + "local_interface": { + "type": "string", + "title": "Local Interface" + }, + "bfd": { + "type": "boolean", + "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", + "title": "BFD" + }, + "bidirectional": { + "type": "boolean", + "title": "Bidirectional" + }, + "hello": { + "type": "object", + "properties": { + "count": { + "type": "string", + "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", + "title": "Count" + }, + "interval": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "PIM hello interval in seconds.", + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Hello" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PIM" + }, + "isis_enable": { + "type": "string", + "description": "ISIS instance name.", + "title": "ISIS Enable" + }, + "isis_bfd": { + "type": "boolean", + "description": "Enable BFD for ISIS.", + "title": "ISIS BFD" + }, + "isis_passive": { + "type": "boolean", + "title": "ISIS Passive" + }, + "isis_metric": { + "type": "integer", + "title": "ISIS Metric" + }, + "isis_network_point_to_point": { + "type": "boolean", + "title": "ISIS Network Point To Point" + }, + "mtu": { + "type": "integer", + "title": "MTU" + }, + "no_autostate": { + "type": "boolean", + "title": "No Autostate" + }, + "vrrp_ids": { + "type": "array", + "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "VRID.", + "title": "ID" + }, + "priority_level": { + "type": "integer", + "description": "Instance priority.", + "minimum": 1, + "maximum": 254, + "title": "Priority Level" + }, + "advertisement": { + "type": "object", + "properties": { + "interval": { + "type": "integer", + "description": "Interval in seconds.", + "minimum": 1, + "maximum": 255, + "title": "Interval" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Advertisement" + }, + "preempt": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "delay": { + "type": "object", + "properties": { + "minimum": { + "type": "integer", + "description": "Minimum preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Minimum" + }, + "reload": { + "type": "integer", + "description": "Reload preempt delay in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Preempt" + }, + "timers": { + "type": "object", + "properties": { + "delay": { + "type": "object", + "properties": { + "reload": { + "type": "integer", + "description": "Delay after reload in seconds.", + "minimum": 0, + "maximum": 3600, + "title": "Reload" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Delay" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Timers" + }, + "tracked_object": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Tracked object name.", + "title": "Name" + }, + "decrement": { + "type": "integer", + "minimum": 1, + "maximum": 254, + "description": "Decrement VRRP priority by 1-254.", + "title": "Decrement" + }, + "shutdown": { + "type": "boolean", + "title": "Shutdown" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Tracked Object" + }, + "ipv4": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "Address" + }, + "version": { + "type": "integer", + "enum": [ + 2, + 3 + ], + "title": "Version" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv4" + }, + "ipv6": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "Address" + } + }, + "required": [ + "address" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "id" + ] + }, + "title": "VRRP IDs" + }, + "vrrp": { + "type": "object", + "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", + "deprecated": true, + "properties": { + "virtual_router": { + "type": "string", + "description": "Virtual Router ID.", + "title": "Virtual Router" + }, + "priority": { + "type": "integer", + "description": "Instance priority.", + "title": "Priority" + }, + "advertisement_interval": { + "type": "integer", + "title": "Advertisement Interval" + }, + "preempt_delay_minimum": { + "type": "integer", + "title": "Preempt Delay Minimum" + }, + "ipv4": { + "type": "string", + "description": "Virtual IPv4 address.", + "title": "IPv4" + }, + "ipv6": { + "type": "string", + "description": "Virtual IPv6 address.", + "title": "IPv6" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "VRRP" + }, + "ip_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "title": "Distance" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IP Attached Host Route Export" + }, + "ipv6_attached_host_route_export": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "distance": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Administrative distance for generated routes.", + "title": "Distance" + }, + "prefix_length": { + "type": "integer", + "minimum": 0, + "maximum": 128, + "description": "Prefix length for generated routes.", + "title": "Prefix Length" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "IPv6 Attached Host Route Export" + }, + "bfd": { + "type": "object", + "properties": { + "echo": { + "type": "boolean", + "title": "Echo" + }, + "interval": { + "type": "integer", + "description": "Rate in milliseconds.", + "title": "Interval" + }, + "min_rx": { + "type": "integer", + "description": "Minimum RX hold time in milliseconds.", + "title": "Min RX" + }, + "multiplier": { + "type": "integer", + "minimum": 3, + "maximum": 50, + "title": "Multiplier" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "BFD" + }, + "service_policy": { + "type": "object", + "properties": { + "pbr": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Name of policy-map used for policy based routing.", + "title": "Input" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "PBR" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Service Policy" + }, + "pvlan_mapping": { + "type": "string", + "description": "List of VLANs as string.", + "title": "PVLAN Mapping" + }, + "tenant": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Tenant" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Key only used for documentation or validation purposes.", + "title": "Tags" + }, + "type": { + "type": "string", + "description": "Key only used for documentation or validation purposes.", + "title": "Type" + }, + "eos_cli": { + "type": "string", + "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", + "title": "EOS CLI" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Structured Config" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "profile" + ] + }, + "title": "SVI Profiles" + }, + "system_mac_address": { + "type": "string", + "description": "Set to the same MAC address as available in \"show version\" on the device.\n\"system_mac_address\" can also be set under node type settings.\nIf both are set, the value under node type settings takes precedence.\n", + "title": "System MAC Address" + }, + "terminattr_disable_aaa": { + "type": "boolean", + "default": false, + "title": "TerminAttr Disable AAA" + }, + "terminattr_ingestexclude": { + "type": "string", + "default": "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent", + "title": "TerminAttr Ingestexclude" + }, + "terminattr_ingestgrpcurl_port": { + "type": "integer", + "default": 9910, + "description": "Port number used for Terminattr connection to an on-premise CloudVision cluster.\nThe port number is always 443 when using CloudVision as a Service, so this value is ignored.", + "title": "TerminAttr Ingestgrpcurl Port" + }, + "terminattr_smashexcludes": { + "type": "string", + "default": "ale,flexCounter,hardware,kni,pulse,strata", + "title": "TerminAttr Smashexcludes" + }, + "timezone": { + "type": "string", + "description": "Clock timezone like \"CET\" or \"US/Pacific\".", + "title": "Timezone" + }, + "trunk_groups": { + "type": "object", + "properties": { + "mlag": { + "type": "object", + "description": "Trunk Group used for MLAG VLAN (Typically VLAN 4094).\n", + "properties": { + "name": { + "type": "string", + "default": "MLAG", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG" + }, + "mlag_l3": { + "type": "object", + "description": "Trunk Group used for MLAG L3 peering VLAN and for VRF L3 peering VLANs (Typically VLAN 4093).\n", + "properties": { + "name": { + "type": "string", + "default": "LEAF_PEER_L3", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MLAG L3" + }, + "uplink": { + "type": "object", + "description": "Trunk Group used on L2 Leaf switches when \"enable_trunk_groups\" is set.\n", + "properties": { + "name": { + "type": "string", + "default": "UPLINK", + "title": "Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Uplink" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Trunk Groups" + }, + "type": { + "type": "string", + "description": "The `type:` variable needs to be defined for each device in the fabric.\nThis is leveraged to load the appropriate template to generate the configuration.\n", + "title": "Type" + }, + "underlay_filter_peer_as": { + "type": "boolean", + "description": "Configure route-map on eBGP sessions towards underlay peers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in very large scale networks not using EVPN overlays, where convergence will be quicker by not having to return\nall updates received from Spine-1 to Spine-2 just for Spine-2 to throw them away because of AS Path loop detection.\nNote that this setting cannot be used while there are EVPN services present in the default VRF.\n", + "default": false, + "title": "Underlay Filter Peer As" + }, + "underlay_filter_redistribute_connected": { + "description": "Filter redistribution of connected into the underlay routing protocol.\nOnly applicable when overlay_routing_protocol != 'none' and underlay_routing_protocol == BGP.\nCreates a route-map and prefix-list assigned to redistribute connected permitting only loopbacks and inband management subnets.\n", + "default": true, + "type": "boolean", + "title": "Underlay Filter Redistribute Connected" + }, + "underlay_ipv6": { + "description": "This feature allows IPv6 underlay routing protocol with RFC5549 addresses to be used along with IPv4 advertisements as VXLAN tunnel endpoints.\nRequires \"underlay_rfc5549: true\" and \"loopback_ipv6_pool\" under the node type settings.\n", + "type": "boolean", + "default": false, + "title": "Underlay IPv6" + }, + "underlay_isis_bfd": { + "type": "boolean", + "default": false, + "description": "Enable BFD for ISIS on all underlay links.", + "title": "Underlay ISIS BFD" + }, + "underlay_isis_instance_name": { + "description": "Default -> \"EVPN_UNDERLAY\" for l3ls, \"CORE\" for mpls.", + "type": "string", + "title": "Underlay ISIS Instance Name" + }, + "underlay_multicast": { + "type": "boolean", + "description": "Enable Multicast in the underlay on all p2p uplink interfaces and mlag l3 peer interface.\nSpecifically PIM Sparse-Mode will be configured on all routed underlay interfaces.\nNo other configuration is added, so the underlay will only support Source-Specific Multicast (SSM).\nThe configuration is intended to be used as multicast underlay for EVPN OISM overlay.\n", + "default": false, + "title": "Underlay Multicast" + }, + "underlay_multicast_anycast_rp": { + "type": "object", + "description": "If multiple nodes are configured under 'underlay_multicast_rps.[].nodes' for the same RP address, they will be configured\nwith one of the following methods:\n- Anycast RP using PIM (RFC4610).\n- Anycast RP using MSDP (RFC4611).\n\nNOTE: When using MSDP, all nodes across all MSDP enabled RPs will be added to a single MSDP mesh group named \"ANYCAST-RP\".\n", + "properties": { + "mode": { + "type": "string", + "enum": [ + "pim", + "msdp" + ], + "default": "pim", + "title": "Mode" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Underlay Multicast Anycast RP" + }, + "underlay_multicast_rps": { + "description": "List of PIM Sparse-Mode Rendevouz Points configured for underlay multicast on all devices.\nThe device(s) listed under 'nodes', will be configured as the Rendevouz point router(s).\nIf multiple nodes are configured under 'nodes' for the same RP address, they will be configured\naccording to the 'underlay_multicast_anycast_rp.mode' setting.\n\nRequires 'underlay_multicast: true'.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "rp": { + "type": "string", + "description": "RP IPv4 address.", + "title": "RP" + }, + "nodes": { + "type": "array", + "description": "List of nodes where a Loopback interface with the RP address will be configured.\n", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Hostname.", + "title": "Name" + }, + "loopback_number": { + "type": "integer", + "title": "Loopback Number" + }, + "description": { + "type": "string", + "description": "Interface description.", + "default": "PIM RP", + "title": "Description" + } + }, + "required": [ + "loopback_number", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Nodes" + }, + "groups": { + "type": "array", + "description": "List of groups to associate with the RP address set in 'rp'.\nIf access_list_name is set, a standard access-list will be configured matching these groups.\nOtherwise the groups are configured directly on the RP command.\n", + "items": { + "type": "string", + "description": "Multicast Group IPv4 prefix/mask." + }, + "title": "Groups" + }, + "access_list_name": { + "type": "string", + "description": "Name of standard Access-List.\n", + "title": "Access List Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "rp" + ] + }, + "title": "Underlay Multicast RPs" + }, + "underlay_ospf_area": { + "type": "string", + "format": "ipv4", + "default": "0.0.0.0", + "title": "Underlay OSPF Area" + }, + "underlay_ospf_authentication": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false, + "title": "Enabled" + }, + "message_digest_keys": { + "type": "array", + "minItems": 1, + "maxItems": 2, + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "title": "ID" + }, + "hash_algorithm": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha384", + "sha512" + ], + "default": "sha512", + "title": "Hash Algorithm" + }, + "key": { + "type": "string", + "maxLength": 16, + "minLength": 1, + "description": "Key password.\nOnly plaintext passwords are supported here as `eos_designs` will encrypt the password for each individual underlay interface.\nTo protect the password at rest it is strongly recommended to make use of Ansible Vault or similar.", + "title": "Key" + } + }, + "required": [ + "key", + "id" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Message Digest Keys" + } + }, + "required": [ + "enabled", + "message_digest_keys" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Underlay OSPF Authentication" + }, + "underlay_ospf_bfd_enable": { + "type": "boolean", + "default": false, + "title": "Underlay OSPF BFD Enable" + }, + "underlay_ospf_max_lsa": { + "type": "integer", + "default": 12000, + "title": "Underlay OSPF Max LSA" + }, + "underlay_ospf_process_id": { + "type": "integer", + "default": 100, + "title": "Underlay OSPF Process ID" + }, + "underlay_rfc5549": { + "description": "Point to Point Underlay with RFC 5549(eBGP), i.e. IPv6 Unnumbered.\nRequires \"underlay_routing_protocol: ebgp\".\n", + "type": "boolean", + "default": false, + "title": "Underlay Rfc5549" + }, + "underlay_routing_protocol": { + "type": "string", + "description": "- The following underlay routing protocols are supported:\n - EBGP (default for l3ls-evpn)\n - OSPF.\n - OSPF-LDP*.\n - ISIS.\n - ISIS-SR*.\n - ISIS-LDP*.\n - ISIS-SR-LDP*.\n - No underlay routing protocol (none)\n- The variables should be applied to all devices in the fabric.\n*Only supported with core_interfaces data model.\n", + "enum": [ + "ebgp", + "ospf", + "ospf-ldp", + "isis", + "isis-sr", + "isis-ldp", + "isis-sr-ldp", + "none" + ], + "title": "Underlay Routing Protocol" + }, + "uplink_ptp": { + "description": "Enable PTP on all infrastructure links.", + "type": "object", + "properties": { + "enable": { + "type": "boolean", + "default": false, + "title": "Enable" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Uplink PTP" + }, + "use_cv_topology": { + "type": "boolean", + "description": "Generate AVD configurations directly from a given CloudVision topology.\nSee `cv_topology` for details.", + "title": "Use Cv Topology" + }, + "vtep_vvtep_ip": { + "description": "IP Address used as Virtual VTEP. Will be configured as secondary IP on Loopback1.\nThis is only needed for centralized routing designs.\n", + "type": "string", + "title": "Vtep Vvtep IP" + }, + "wan_carriers": { + "description": "List of carriers used for the WAN configuration and their mapping to path-groups.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Carrier name.", + "title": "Name" + }, + "description": { + "type": "string", + "description": "Additional information about the carrier for documentation purposes.", + "title": "Description" + }, + "path_group": { + "type": "string", + "description": "The path-group to which this carrier belongs.", + "title": "Path Group" + }, + "trusted": { + "type": "boolean", + "default": false, + "description": "Set this to `true` to mark this carrier as \"trusted\".\nWAN interfaces require an inbound access-list to be set unless the carrier is \"trusted\".", + "title": "Trusted" + } + }, + "required": [ + "path_group", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Wan Carriers" + }, + "wan_ha": { + "description": "PREVIEW: The `wan_ha` key is currently not supported.", + "type": "object", + "properties": { + "lan_ha_path_group_name": { + "type": "string", + "default": "LAN_HA", + "description": "When WAN HA is enabled for a site if `wan_mode: cv-pathfinder`, a default path-group is injected to form DPS tunnels over LAN.\nThis key allows to overwrite the default LAN HA path-group name.", + "title": "Lan Ha Path Group Name" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wan Ha" + }, + "wan_ipsec_profiles": { + "description": "Define IPsec profiles parameters for WAN configuration.", + "type": "object", + "properties": { + "control_plane": { + "type": "object", + "properties": { + "ike_policy_name": { + "type": "string", + "default": "CP-IKE-POLICY", + "description": "Name of the IKE policy.", + "title": "Ike Policy Name" + }, + "sa_policy_name": { + "type": "string", + "default": "CP-SA-POLICY", + "description": "Name of the SA policy.", + "title": "Sa Policy Name" + }, + "profile_name": { + "type": "string", + "default": "CP-PROFILE", + "description": "Name of the IPSec profile.", + "title": "Profile Name" + }, + "shared_key": { + "type": "string", + "description": "The IPSec shared key.\nThis variable is sensitive and SHOULD be configured using some vault mechanism.", + "title": "Shared Key" + } + }, + "required": [ + "shared_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Plane" + }, + "data_plane": { + "type": "object", + "description": "If `data_plane` is not defined, `control_plane` information is used for both.", + "properties": { + "ike_policy_name": { + "type": "string", + "default": "DP-IKE-POLICY", + "description": "Name of the IKE policy.", + "title": "Ike Policy Name" + }, + "sa_policy_name": { + "type": "string", + "default": "DP-SA-POLICY", + "description": "Name of the SA policy.", + "title": "Sa Policy Name" + }, + "profile_name": { + "type": "string", + "default": "DP-PROFILE", + "description": "Name of the IPSec profile.", + "title": "Profile Name" + }, + "shared_key": { + "type": "string", + "description": "The type 7 encrypted IPSec shared key.\nThis variable is sensitive and should be configured using some vault mechanism.", + "title": "Shared Key" + } + }, + "required": [ + "shared_key" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Data Plane" + } + }, + "required": [ + "control_plane" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wan Ipsec Profiles" + }, + "wan_mode": { + "description": "Select if the WAN should be run using CV Pathfinder or AutoVPN only.", + "type": "string", + "default": "cv-pathfinder", + "enum": [ + "autovpn", + "cv-pathfinder" + ], + "title": "Wan Mode" + }, + "wan_path_groups": { + "description": "List of path-groups used for the WAN configuration.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path-group name.", + "title": "Name" + }, + "id": { + "type": "integer", + "description": "Path-group id.\nRequired until an auto ID algorithm is implemented.", + "title": "ID" + }, + "description": { + "type": "string", + "description": "Additional information about the path-group for documentation purposes.", + "title": "Description" + }, + "ipsec": { + "type": "object", + "description": "Configuration of IPSec at the path-group level.", + "properties": { + "dynamic_peers": { + "type": "boolean", + "description": "Enable IPSec for dynamic peers.", + "default": true, + "title": "Dynamic Peers" + }, + "static_peers": { + "type": "boolean", + "description": "Enable IPSec for static peers.", + "default": true, + "title": "Static Peers" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Ipsec" + }, + "import_path_groups": { + "type": "array", + "description": "List of path-groups to import in this path-group.", + "items": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "description": "Remote path-group to import.", + "title": "Remote" + }, + "local": { + "type": "string", + "description": "Optional, if not set, the path-group `name` is used as local.", + "title": "Local" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Import Path Groups" + }, + "default_preference": { + "type": "string", + "description": "Preference value used when a preference is not given for a path-group in the `wan_virtual_topologies.policies` input or when\nthe path-group is used in an auto generated policy except if `excluded_from_default_policy` is set to `true.\n\nValid values are 1-65535 | \"preferred\" | \"alternate\".\n\n`preferred` is converted to priority 1.\n`alternate` is converted to priority 2.", + "default": "preferred", + "title": "Default Preference" + }, + "excluded_from_default_policy": { + "type": "boolean", + "default": false, + "description": "When set to `true`, the path-group is excluded from AVD auto generated policies.", + "title": "Excluded From Default Policy" + }, + "dps_keepalive": { + "type": "object", + "description": "Period between the transmission of consecutive keepalive messages, and failure threshold.", + "properties": { + "interval": { + "type": "string", + "description": "Interval in milliseconds. Valid values are 50-60000 | \"auto\".\n\nWhen auto, the interval and failure_threshold are automatically determined based on\npath state.", + "title": "Interval" + }, + "failure_threshold": { + "type": "integer", + "minimum": 2, + "maximum": 100, + "default": 5, + "description": "Failure threshold in number of lost keep-alive messages.", + "title": "Failure Threshold" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "DPS Keepalive" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Wan Path Groups" + }, + "wan_route_servers": { + "description": "List of the AutoVPN RRs when using `wan_mode`=`autovpn`, or the Pathfinders\nwhen using `wan_mode`=`cv-pathfinder`, to which the device should connect to.\nThis is also used to establish iBGP sessions between WAN route servers.\n\nWhen the route server is part of the same inventory as the WAN routers,\nonly the name is required.", + "type": "array", + "items": { + "type": "object", + "properties": { + "hostname": { + "type": "string", + "description": "Route-Reflector hostname.", + "title": "Hostname" + }, + "vtep_ip": { + "type": "string", + "description": "Route-Reflector VTEP IP Address. This is usually the IP address under `interface Dps1`.", + "title": "Vtep IP" + }, + "path_groups": { + "type": "array", + "description": "Path-groups through which the Route Reflector/Pathfinder is reached.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Path-group name.", + "title": "Name" + }, + "interfaces": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Interface name.", + "title": "Name" + }, + "public_ip": { + "type": "string", + "description": "The public IPv4 address (without mask) of the Route Reflector for this path-group.", + "title": "Public IP" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "name" + ] + }, + "title": "Interfaces" + } + }, + "required": [ + "interfaces", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "hostname" + ] + }, + "title": "Wan Route Servers" + }, + "wan_stun_dtls_disable": { + "type": "boolean", + "default": false, + "description": "WAN STUN connections are authenticated and secured with DTLS by default.\nFor CV Pathfinder deployments CloudVision will automatically deploy certificates on the devices.\nIn case of AutoVPN the certificates must be deployed manually to all devices.\n\nFor LAB environments this can be disabled, if there are no certificates available.\nThis should NOT be disabled for a WAN network connected to the internet, since it will leave the STUN service exposed with no authentication.", + "title": "Wan STUN Dtls Disable" + }, + "wan_stun_dtls_profile_name": { + "type": "string", + "default": "STUN-DTLS", + "description": "Name of the SSL profile used for DTLS on WAN STUN connections.\nWhen using automatic ceritficate deployment via CloudVision this name must be the same on all WAN routers.", + "title": "Wan STUN Dtls Profile Name" + }, + "wan_virtual_topologies": { + "type": "object", + "description": "Configure Virtual Topologies for CV Pathfinder and AutoVPN.\nAuto create a control plane profile/policy/application and enforce it being first in the default VRF.", + "properties": { + "vrfs": { + "type": "array", + "description": "Map a VRF that exists in network_services to an AVT policy.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "VRF name.", + "title": "Name" + }, + "policy": { + "type": "string", + "description": "Name of the policy to apply to this VRF.\nAVD will auto generate a default policy DEFAULT-POLICY and apply it to the VRF(s)\nwhere the `policy` key is not set.\nIt is possible to overwrite the default policy for all VRFs using it\nby redefining it in the `wan_virtual_topologies.policies` list using the\ndefault name `DEFAULT-POLICY`.", + "default": "DEFAULT-POLICY", + "title": "Policy" + }, + "wan_vni": { + "type": "integer", + "minimum": 1, + "maximum": 255, + "description": "Required for VRFs carried over AutoVPN or CV Pathfinder WAN.\n\nA VRF can have different VNIs between the Datacenters and the WAN.\nNote that if no VRF default is configured for WAN, AVD will automatically inject the VRF default with\n`wan_vni` set to `1`.\nIn addition either `vrf_id` or `vrf_vni` must be set to enforce consistent route-targets across domains.", + "title": "Wan Vni" + } + }, + "required": [ + "wan_vni", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "VRFs" + }, + "control_plane_virtual_topology": { + "type": "object", + "description": "Always injected into the default VRF policy as the first entry.\n\nBy default, if no path-groups are specified, all locally available path-groups\nare used in the generated load-balance policy.\nID is hardcoded to 254 for the AVT profile in CV Pathfinder mode.", + "properties": { + "name": { + "type": "string", + "description": "Optional name, if not set `CONTROL-PLANE-PROFILE` is used.", + "title": "Name" + }, + "application_profile": { + "type": "string", + "default": "APP-PROFILE-CONTROL-PLANE", + "description": "The application profile to use for control plane traffic.\n\nThe application profile should be defined under `application_classification.application_profiles`.\nIf not defined AVD will auto generate an application profile using the provided name or the default value.\n\nIf not overwritten elsewhere, the application profile is generated matching one application matching the control plane traffic either sourced from or destined to the WAN route servers.", + "title": "Application Profile" + }, + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Set traffic-class for matched traffic.", + "title": "Traffic Class" + }, + "dscp": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "description": "Set DSCP for matched traffic.", + "title": "DSCP" + }, + "lowest_hop_count": { + "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", + "type": "boolean", + "default": false, + "title": "Lowest Hop Count" + }, + "constraints": { + "type": "object", + "properties": { + "jitter": { + "type": "integer", + "description": "Jitter requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Jitter" + }, + "latency": { + "type": "integer", + "description": "One way delay requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Latency" + }, + "loss_rate": { + "type": "string", + "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "title": "Loss Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Constraints" + }, + "path_groups": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "names": { + "type": "array", + "description": "List of path-group names.", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Names" + }, + "preference": { + "type": "string", + "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", + "title": "Preference" + } + }, + "required": [ + "names" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Groups" + }, + "internet_exit": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Internet Exit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Control Plane Virtual Topology" + }, + "policies": { + "type": "array", + "description": "List of virtual toplogies policies.\n\nFor AutoVPN, each item in the list creates:\n * one policy with:\n * one `match` entry per `application_virtual_topologies` item\n they are indexed using `10 * ` where `list_index` starts at `1`.\n * one `default-match`\n * one load-balance policy per `application_virtual_topologies` and one for the `default_virtual_topology`.\n * if the policy is associated with the default VRF, a special control-plane rule is injected\n in the policy with index `1` referring to a control-plane load-balance policy as defined under\n `control_plane_virtual_topology` or if not set, the default one.\n\nFor CV Pathfinder, each item in the list creates:\n * one policy with:\n * one `match` entry per `application_virtual_topologies` item ordered as in the data.\n * one last match entry for the `default` application-profile using `default_virtual_topology` information.\n * one profile per `application_virtual_topologies` item.\n * one profile for the `default_virtual_topology`.\n * one load-balance policy per `application_virtual_topologies`.\n * one load_balance policy for the `default_virtual_topology`.\n * if the policy is associated with the default VRF, a special control-plane profile is configured\n and injected first in the policy assigned to the `default` VRF. This profile points to a\n control-plane load-balance policy as defined under `control_plane_virtual_topology` or if not set, the default one.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the AVT policy.", + "title": "Name" + }, + "application_virtual_topologies": { + "type": "array", + "description": "List of application specific virtual topologies.", + "items": { + "type": "object", + "properties": { + "application_profile": { + "type": "string", + "description": "The application profile to use for this virtual topology. It must be a defined `application_classification.application_profile`.", + "title": "Application Profile" + }, + "name": { + "type": "string", + "description": "Optional name, if not set `-` is used.", + "title": "Name" + }, + "id": { + "type": "integer", + "minimum": 2, + "maximum": 253, + "description": "ID of the AVT in each VRFs. ID must be unique across all virtual topologies in a policy.\nID 1 is reserved for the default_virtual_toplogy.\nID 254 is reserved for the control_plane_virtual_topology.\n\n`id` is required when `wan_mode` is 'cv-pathfinder'.", + "title": "ID" + }, + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Set traffic-class for matched traffic.", + "title": "Traffic Class" + }, + "dscp": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "description": "Set DSCP for matched traffic.", + "title": "DSCP" + }, + "lowest_hop_count": { + "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", + "type": "boolean", + "default": false, + "title": "Lowest Hop Count" + }, + "constraints": { + "type": "object", + "properties": { + "jitter": { + "type": "integer", + "description": "Jitter requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Jitter" + }, + "latency": { + "type": "integer", + "description": "One way delay requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Latency" + }, + "loss_rate": { + "type": "string", + "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "title": "Loss Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Constraints" + }, + "path_groups": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "names": { + "type": "array", + "description": "List of path-group names.", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Names" + }, + "preference": { + "type": "string", + "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", + "title": "Preference" + } + }, + "required": [ + "names" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Groups" + }, + "internet_exit": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Internet Exit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "required": [ + "application_profile" + ] + }, + "title": "Application Virtual Topologies" + }, + "default_virtual_topology": { + "type": "object", + "description": "Default match for the policy.\nIf no default match should be configured, set `drop_unmatched` to `true`.\nOtherwise, in CV Pathfinder mode, a default AVT profile will be configured with ID 1.", + "properties": { + "name": { + "type": "string", + "description": "Optional name, if not set `-DEFAULT` is used.", + "title": "Name" + }, + "drop_unmatched": { + "type": "boolean", + "description": "When set, no `catch-all` match is configured for the policy and unmatched traffic is dropped.", + "default": false, + "title": "Drop Unmatched" + }, + "traffic_class": { + "type": "integer", + "minimum": 0, + "maximum": 7, + "description": "Set traffic-class for matched traffic.", + "title": "Traffic Class" + }, + "dscp": { + "type": "integer", + "minimum": 0, + "maximum": 63, + "description": "Set DSCP for matched traffic.", + "title": "DSCP" + }, + "lowest_hop_count": { + "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", + "type": "boolean", + "default": false, + "title": "Lowest Hop Count" + }, + "constraints": { + "type": "object", + "properties": { + "jitter": { + "type": "integer", + "description": "Jitter requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Jitter" + }, + "latency": { + "type": "integer", + "description": "One way delay requirement for this load balance policy in milliseconds.", + "minimum": 0, + "maximum": 10000, + "title": "Latency" + }, + "loss_rate": { + "type": "string", + "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", + "pattern": "^\\d+(\\.\\d{1,2})?$", + "title": "Loss Rate" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Constraints" + }, + "path_groups": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "properties": { + "names": { + "type": "array", + "description": "List of path-group names.", + "minItems": 1, + "items": { + "type": "string" + }, + "title": "Names" + }, + "preference": { + "type": "string", + "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", + "title": "Preference" + } + }, + "required": [ + "names" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Path Groups" + }, + "internet_exit": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", + "title": "Policy" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Internet Exit" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default Virtual Topology" + } + }, + "required": [ + "default_virtual_topology", + "name" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + } + }, + "title": "Policies" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Wan Virtual Topologies" + }, + "zscaler_endpoints": { + "type": "object", + "description": "PREVIEW: These keys are in preview mode.\n\nSpecial data model used for testing the WAN internet-exit integration with Zscaler.\nThe model is supposed to be autofilled per-device by `eos_designs`.\nManually setting this model will take precedence and prevent `eos_designs` from trying to contact CloudVision.\nThis can be useful for offline testing or if CloudVision is not available or not configured for Zscaler integration.", + "properties": { + "primary": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "datacenter": { + "type": "string", + "title": "Datacenter" + }, + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + }, + "latitude": { + "type": "string", + "title": "Latitude" + }, + "longitude": { + "type": "string", + "title": "Longitude" + } + }, + "required": [ + "ip_address", + "datacenter", + "city", + "country", + "latitude", + "longitude" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Primary" + }, + "secondary": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "datacenter": { + "type": "string", + "title": "Datacenter" + }, + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + }, + "latitude": { + "type": "string", + "title": "Latitude" + }, + "longitude": { + "type": "string", + "title": "Longitude" + } + }, + "required": [ + "ip_address", + "datacenter", + "city", + "country", + "latitude", + "longitude" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Secondary" + }, + "tertiary": { + "type": "object", + "properties": { + "ip_address": { + "type": "string", + "title": "IP Address" + }, + "datacenter": { + "type": "string", + "title": "Datacenter" + }, + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + }, + "latitude": { + "type": "string", + "title": "Latitude" + }, + "longitude": { + "type": "string", + "title": "Longitude" + } + }, + "required": [ + "ip_address", + "datacenter", + "city", + "country", + "latitude", + "longitude" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tertiary" + }, + "cloud_name": { + "description": "The name of the Zscaler cloud the CloudVision cluster is integrated with like 'zscaler1' or 'zscalerbeta'.", + "type": "string", + "title": "Cloud Name" + }, + "device_location": { + "description": "The location of the calling device after being resolved by Zscaler location APIs. This is required since Zscaler only accepts their own variants of City and Country.", + "type": "object", + "properties": { + "city": { + "type": "string", + "title": "City" + }, + "country": { + "type": "string", + "title": "Country" + } + }, + "required": [ + "city", + "country" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Device Location" + } + }, + "required": [ + "primary", + "cloud_name", + "device_location" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Zscaler Endpoints" + } + }, + "required": [ + "fabric_name" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 2f3f67e8d78..327c34961fd 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -6109,6 +6109,16 @@ $defs: Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. + ' + loopback_ipv6_range: + type: str + description: 'IPv6_address/Mask. + + Loopback ipv6 range, a unique ipv6 is derived from this ranged + and assignedto each l3 leaf based on it''s unique id. + + Loopback is not created unless loopback_ipv6_range is set. + ' loopback_ip_pools: type: list @@ -6129,6 +6139,9 @@ $defs: ipv4_pool: type: str description: IPv4_address/Mask. + ipv6_pool: + type: str + description: IPv6_address/Mask. ospf: documentation_options: table: network-services-vrfs-ospf-settings diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index b92a58bab7c..b5bd89ae4f8 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -432,6 +432,12 @@ $defs: IPv4_address/Mask. Loopback ip range, a unique ip is derived from this ranged and assignedto each l3 leaf based on it's unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. + loopback_ipv6_range: + type: str + description: | + IPv6_address/Mask. + Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id. + Loopback is not created unless loopback_ipv6_range is set. loopback_ip_pools: type: list description: | @@ -446,6 +452,9 @@ $defs: ipv4_pool: type: str description: IPv4_address/Mask. + ipv6_pool: + type: str + description: IPv6_address/Mask. ospf: documentation_options: table: network-services-vrfs-ospf-settings diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index bb9b02d8272..5e3b6d9a669 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -80,25 +80,34 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic if (loopback := get(vrf, "vtep_diagnostic.loopback")) is None: return None + loopback_ipv4_pool = "" + loopback_ipv6_pool = "" if (loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None: - if (pod_name := self.shared_utils.pod_name) is None: - # Skip this vrf since we have no loopback_ip_range and pod_name - return None - - if (loopback_ip_pools := get(vrf, "vtep_diagnostic.loopback_ip_pools")) is None: - # Skip this vrf since we have no pools either - return None - - if (loopback_ipv4_pool := get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool")) is None: - # Skip this vrf since we cannot find our pod_name in the pools or the pool is missing the ipv4_pool - return None + pod_name = self.shared_utils.pod_name + loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") + if pod_name and loopback_ip_pools: + loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") + + if (loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None: + pod_name = self.shared_utils.pod_name + loopback_ipv6_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") + if pod_name and loopback_ipv6_pools: + loopback_ipv6_pool = get_item(loopback_ipv6_pools, "pod", pod_name, default={}).get("ipv6_pool") + + if not loopback_ipv4_pool and not loopback_ipv6_pool: + return None - # If we ended up here, it means we have a loopback_ipv4_pool set interface_name = f"Loopback{loopback}" - return { + vtep_diagnostic_loopback_for_vrf = { "name": interface_name, "description": get(vrf, "vtep_diagnostic.loopback_description", default=f"{vrf['name']}_VTEP_DIAGNOSTICS"), "shutdown": False, "vrf": vrf["name"], - "ip_address": f"{self.shared_utils.ip_addressing.vrf_loopback_ip(loopback_ipv4_pool)}/32", } + + if loopback_ipv4_pool: + vtep_diagnostic_loopback_for_vrf["ip_address"] = f"{self.shared_utils.ip_addressing.vrf_loopback_ip(loopback_ipv4_pool)}/32" + if loopback_ipv6_pool: + vtep_diagnostic_loopback_for_vrf["ipv6_address"] = f"{self.shared_utils.ip_addressing.vrf_loopback_ipv6(loopback_ipv6_pool)}/128" + + return vtep_diagnostic_loopback_for_vrf diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py index f339276b836..bbe42f0d553 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py @@ -6,7 +6,7 @@ from functools import cached_property from typing import TYPE_CHECKING -from ...._utils import append_if_not_duplicate +from ...._utils import append_if_not_duplicate, strip_null_from_data from .utils import UtilsMixin if TYPE_CHECKING: @@ -46,15 +46,16 @@ def virtual_source_nat_vrfs(self: AvdStructuredConfigNetworkServices) -> list | primary_key="name", new_dict={ "name": vrf, - "ip_address": loopback_interface["ip_address"].split("/", maxsplit=1)[0], + "ip_address": loopback_interface["ip_address"].split("/", maxsplit=1)[0] if "ipv6_address" in loopback_interface else None, + "ipv6_address": loopback_interface["ipv6_address"].split("/", maxsplit=1)[0] if "ipv6_address" in loopback_interface else None, }, context="virtual_source_nat_vrfs", context_keys=["name"], ignore_same_dict=True, - ignore_keys={"ip_address"}, + ignore_keys={"ip_address", "ipv6_address"}, ) if virtual_source_nat_vrfs: - return virtual_source_nat_vrfs + return strip_null_from_data(virtual_source_nat_vrfs) return None From 82eb50909876a08cb9f57f7518d26a4166a55e2d Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Wed, 17 Jul 2024 16:42:29 +0530 Subject: [PATCH 02/24] fixing molecule --- .../documentation/devices/dc1-leaf1a.md | 8 ++++--- .../documentation/devices/dc1-leaf1b.md | 8 ++++--- .../documentation/devices/dc1-leaf2a.md | 8 ++++--- .../documentation/devices/dc1-leaf2b.md | 8 ++++--- .../documentation/devices/dc2-leaf1a.md | 8 ++++--- .../documentation/devices/dc2-leaf1b.md | 8 ++++--- .../documentation/devices/dc2-leaf2a.md | 8 ++++--- .../documentation/devices/dc2-leaf2b.md | 8 ++++--- .../intended/configs/dc1-leaf1a.cfg | 2 ++ .../intended/configs/dc1-leaf1b.cfg | 2 ++ .../intended/configs/dc1-leaf2a.cfg | 2 ++ .../intended/configs/dc1-leaf2b.cfg | 2 ++ .../intended/configs/dc2-leaf1a.cfg | 2 ++ .../intended/configs/dc2-leaf1b.cfg | 2 ++ .../intended/configs/dc2-leaf2a.cfg | 2 ++ .../intended/configs/dc2-leaf2b.cfg | 2 ++ .../structured_configs/dc1-leaf1a.yml | 2 ++ .../structured_configs/dc1-leaf1b.yml | 2 ++ .../structured_configs/dc1-leaf2a.yml | 2 ++ .../structured_configs/dc1-leaf2b.yml | 2 ++ .../structured_configs/dc2-leaf1a.yml | 2 ++ .../structured_configs/dc2-leaf1b.yml | 2 ++ .../structured_configs/dc2-leaf2a.yml | 2 ++ .../structured_configs/dc2-leaf2b.yml | 2 ++ .../documentation/devices/dc1-leaf1a.md | 8 ++++--- .../documentation/devices/dc1-leaf1b.md | 8 ++++--- .../documentation/devices/dc1-leaf2a.md | 8 ++++--- .../documentation/devices/dc1-leaf2b.md | 8 ++++--- .../intended/configs/dc1-leaf1a.cfg | 2 ++ .../intended/configs/dc1-leaf1b.cfg | 2 ++ .../intended/configs/dc1-leaf2a.cfg | 2 ++ .../intended/configs/dc1-leaf2b.cfg | 2 ++ .../structured_configs/dc1-leaf1a.yml | 2 ++ .../structured_configs/dc1-leaf1b.yml | 2 ++ .../structured_configs/dc1-leaf2a.yml | 2 ++ .../structured_configs/dc1-leaf2b.yml | 2 ++ .../devices/virtual-source-nat.md | 2 +- .../documentation/devices/host1.md | 2 +- .../documentation/devices/DC1-LEAF2A.md | 5 ++-- .../documentation/devices/DC1-LEAF2B.md | 5 ++-- .../documentation/devices/DC1-SVC3A.md | 5 ++-- .../documentation/devices/DC1-SVC3B.md | 5 ++-- .../intended/configs/DC1-LEAF2A.cfg | 1 + .../intended/configs/DC1-LEAF2B.cfg | 1 + .../intended/configs/DC1-SVC3A.cfg | 1 + .../intended/configs/DC1-SVC3B.cfg | 1 + .../structured_configs/DC1-LEAF2A.yml | 1 + .../structured_configs/DC1-LEAF2B.yml | 1 + .../intended/structured_configs/DC1-SVC3A.yml | 1 + .../intended/structured_configs/DC1-SVC3B.yml | 1 + .../cvp-empty-filter/cv_server_configlets.yml | 24 +++++++++++-------- .../cvp/cv_server_configlets.yml | 24 +++++++++++-------- .../documentation/devices/DC1-POD1-LEAF2B.md | 8 ++++--- .../documentation/devices/DC1-POD2-LEAF1A.md | 8 ++++--- .../documentation/devices/DC1.POD1.LEAF2A.md | 8 ++++--- .../documentation/devices/DC2-POD1-LEAF1A.md | 8 ++++--- .../intended/configs/DC1-POD1-LEAF2B.cfg | 2 ++ .../intended/configs/DC1-POD2-LEAF1A.cfg | 2 ++ .../intended/configs/DC1.POD1.LEAF2A.cfg | 2 ++ .../intended/configs/DC2-POD1-LEAF1A.cfg | 2 ++ .../structured_configs/DC1-POD1-LEAF2B.yml | 2 ++ .../structured_configs/DC1-POD2-LEAF1A.yml | 2 ++ .../structured_configs/DC1.POD1.LEAF2A.yml | 2 ++ .../structured_configs/DC2-POD1-LEAF1A.yml | 2 ++ .../intended/configs/DC1-LEAF1A.cfg | 1 + .../intended/configs/DC1-LEAF2A.cfg | 2 ++ .../intended/configs/DC1-LEAF2B.cfg | 2 ++ .../intended/configs/DC1-SVC3A.cfg | 1 + .../intended/configs/DC1-SVC3B.cfg | 1 + .../configs/DC1_UNDEPLOYED_LEAF1A.cfg | 1 + .../configs/DC1_UNDEPLOYED_LEAF1B.cfg | 1 + .../configs/EVPN-MULTICAST-DISABLED.cfg | 9 +++++++ .../configs/EVPN-MULTICAST-L3LEAF1A.cfg | 9 +++++++ .../configs/EVPN-MULTICAST-L3LEAF1B.cfg | 9 +++++++ .../configs/EVPN-MULTICAST-L3LEAF2A.cfg | 9 +++++++ .../configs/EVPN-MULTICAST-L3LEAF3A.cfg | 9 +++++++ .../configs/EVPN-MULTICAST-L3LEAF3B.cfg | 9 +++++++ .../configs/evpn_services_l2_only_false.cfg | 1 + .../structured_configs/DC1-LEAF1A.yml | 1 + .../structured_configs/DC1-LEAF2A.yml | 2 ++ .../structured_configs/DC1-LEAF2B.yml | 2 ++ .../intended/structured_configs/DC1-SVC3A.yml | 1 + .../intended/structured_configs/DC1-SVC3B.yml | 1 + .../DC1_UNDEPLOYED_LEAF1A.yml | 1 + .../DC1_UNDEPLOYED_LEAF1B.yml | 1 + .../EVPN-MULTICAST-DISABLED.yml | 9 +++++++ .../EVPN-MULTICAST-L3LEAF1A.yml | 9 +++++++ .../EVPN-MULTICAST-L3LEAF1B.yml | 9 +++++++ .../EVPN-MULTICAST-L3LEAF2A.yml | 9 +++++++ .../EVPN-MULTICAST-L3LEAF3A.yml | 9 +++++++ .../EVPN-MULTICAST-L3LEAF3B.yml | 9 +++++++ .../evpn_services_l2_only_false.yml | 1 + .../structured_configs/dc1-leaf1a.yml | 2 ++ .../structured_configs/dc1-leaf1b.yml | 2 ++ .../structured_configs/dc1-leaf2a.yml | 2 ++ .../structured_configs/dc1-leaf2b.yml | 2 ++ .../structured_configs/dc2-leaf1a.yml | 2 ++ .../structured_configs/dc2-leaf1b.yml | 2 ++ .../structured_configs/dc2-leaf2a.yml | 2 ++ .../structured_configs/dc2-leaf2b.yml | 2 ++ .../dc2-leaf3a.arista.com.yml | 2 ++ .../dc2-leaf3b.arista.com.yml | 2 ++ .../documentation/devices/DC1-LEAF2A.md | 5 ++-- .../documentation/devices/DC1-LEAF2B.md | 5 ++-- .../documentation/devices/DC1-SVC3A.md | 5 ++-- .../documentation/devices/DC1-SVC3B.md | 5 ++-- .../intended/configs/DC1-LEAF2A.cfg | 1 + .../intended/configs/DC1-LEAF2B.cfg | 1 + .../intended/configs/DC1-SVC3A.cfg | 1 + .../intended/configs/DC1-SVC3B.cfg | 1 + .../structured_configs/DC1-LEAF2A.yml | 1 + .../structured_configs/DC1-LEAF2B.yml | 1 + .../intended/structured_configs/DC1-SVC3A.yml | 1 + .../intended/structured_configs/DC1-SVC3B.yml | 1 + .../documentation/devices/DC1-LEAF2A.md | 5 ++-- .../documentation/devices/DC1-LEAF2B.md | 5 ++-- .../documentation/devices/DC1-LEAF3A.md | 5 ++-- .../documentation/devices/DC1-LEAF3B.md | 5 ++-- .../documentation/devices/DC1-LEAF4A.md | 5 ++-- .../documentation/devices/DC1-LEAF4B.md | 5 ++-- .../documentation/devices/DC1-SVC3A.md | 5 ++-- .../documentation/devices/DC1-SVC3B.md | 5 ++-- .../intended/configs/DC1-LEAF2A.cfg | 1 + .../intended/configs/DC1-LEAF2B.cfg | 1 + .../intended/configs/DC1-LEAF3A.cfg | 1 + .../intended/configs/DC1-LEAF3B.cfg | 1 + .../intended/configs/DC1-LEAF4A.cfg | 1 + .../intended/configs/DC1-LEAF4B.cfg | 1 + .../intended/configs/DC1-SVC3A.cfg | 1 + .../intended/configs/DC1-SVC3B.cfg | 1 + .../structured_configs/DC1-LEAF2A.yml | 1 + .../structured_configs/DC1-LEAF2B.yml | 1 + .../structured_configs/DC1-LEAF3A.yml | 1 + .../structured_configs/DC1-LEAF3B.yml | 1 + .../structured_configs/DC1-LEAF4A.yml | 1 + .../structured_configs/DC1-LEAF4B.yml | 1 + .../intended/structured_configs/DC1-SVC3A.yml | 1 + .../intended/structured_configs/DC1-SVC3B.yml | 1 + .../documentation/virtual-source-nat-vrfs.j2 | 2 +- .../virtual_source_nat_vrfs.py | 2 +- 140 files changed, 404 insertions(+), 104 deletions(-) diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md index a64fa173e3b..3115a8cbdf4 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -887,12 +887,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.3 | - | +| VRF11 | 10.255.11.3 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.3 +ip address virtual source-nat vrf VRF11 address 10.255.11.3 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md index e1a91c80f77..1f317de78cc 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -887,12 +887,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.4 | - | +| VRF11 | 10.255.11.4 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.4 +ip address virtual source-nat vrf VRF11 address 10.255.11.4 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md index 1f854520f30..89c4df5cc3f 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -945,12 +945,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.5 | - | +| VRF11 | 10.255.11.5 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.5 +ip address virtual source-nat vrf VRF11 address 10.255.11.5 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md index 892600db43f..f0218f1f0ed 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -945,12 +945,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.6 | - | +| VRF11 | 10.255.11.6 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.6 +ip address virtual source-nat vrf VRF11 address 10.255.11.6 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md index 233aaa61fcc..9b949b03bbe 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md @@ -887,12 +887,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.13 | - | +| VRF11 | 10.255.11.13 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.13 +ip address virtual source-nat vrf VRF11 address 10.255.11.13 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md index f2c1e37c9ac..e075bc2ee65 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md @@ -887,12 +887,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.14 | - | +| VRF11 | 10.255.11.14 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.14 +ip address virtual source-nat vrf VRF11 address 10.255.11.14 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md index 18e8b57f400..e96e01f1075 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md @@ -945,12 +945,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.15 | - | +| VRF11 | 10.255.11.15 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.15 +ip address virtual source-nat vrf VRF11 address 10.255.11.15 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md index 4f7dc04de81..72907e7f08a 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md @@ -945,12 +945,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.16 | - | +| VRF11 | 10.255.11.16 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.16 +ip address virtual source-nat vrf VRF11 address 10.255.11.16 ``` diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg index c64cd9b7b97..d15ba72bd39 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1a.cfg @@ -213,6 +213,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.3 +ip address virtual source-nat vrf VRF11 address 10.255.11.3 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg index 26a4cad0994..de1c25496ec 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf1b.cfg @@ -213,6 +213,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.4 +ip address virtual source-nat vrf VRF11 address 10.255.11.4 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg index 20129ab29f2..86f3154d3e6 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2a.cfg @@ -220,6 +220,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.5 +ip address virtual source-nat vrf VRF11 address 10.255.11.5 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg index d2c83d8a22a..66b47d5f928 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc1-leaf2b.cfg @@ -220,6 +220,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.6 +ip address virtual source-nat vrf VRF11 address 10.255.11.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg index 2b1944c7ebb..8a58f1a2737 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1a.cfg @@ -213,6 +213,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.13 +ip address virtual source-nat vrf VRF11 address 10.255.11.13 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg index d8086cc6c6f..12a16fef261 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf1b.cfg @@ -213,6 +213,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.14 +ip address virtual source-nat vrf VRF11 address 10.255.11.14 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg index b788819d32e..2394515af77 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2a.cfg @@ -220,6 +220,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.15 +ip address virtual source-nat vrf VRF11 address 10.255.11.15 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg index 4d19d929d8f..5ed2092b0ed 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/configs/dc2-leaf2b.cfg @@ -220,6 +220,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.16 +ip address virtual source-nat vrf VRF11 address 10.255.11.16 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml index 65d913ce95a..9b21b45e0c8 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml @@ -460,6 +460,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.3 - name: VRF11 + ip_address: 10.255.11.3 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml index 758b1412564..bf891849c24 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml @@ -460,6 +460,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.4 - name: VRF11 + ip_address: 10.255.11.4 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml index bde5e023af2..30c8948af28 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml @@ -531,6 +531,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.5 - name: VRF11 + ip_address: 10.255.11.5 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml index 257cdf8f514..b147984935d 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml @@ -531,6 +531,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.6 - name: VRF11 + ip_address: 10.255.11.6 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml index 89418be5715..081a05bd994 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1a.yml @@ -460,6 +460,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.13 - name: VRF11 + ip_address: 10.255.11.13 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml index 64a49d6eb21..bd62070d4cc 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf1b.yml @@ -460,6 +460,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.14 - name: VRF11 + ip_address: 10.255.11.14 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml index 06ffeac80d3..3ac6d9941f8 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2a.yml @@ -531,6 +531,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.15 - name: VRF11 + ip_address: 10.255.11.15 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml index 30919c258d8..3bb78ceb49d 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/intended/structured_configs/dc2-leaf2b.yml @@ -531,6 +531,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.16 - name: VRF11 + ip_address: 10.255.11.16 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md index cfec28a4381..4c7136c3e25 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -948,12 +948,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.3 | - | +| VRF11 | 10.255.11.3 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.3 +ip address virtual source-nat vrf VRF11 address 10.255.11.3 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md index 0520b6e958d..679d6a46e97 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -948,12 +948,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.4 | - | +| VRF11 | 10.255.11.4 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.4 +ip address virtual source-nat vrf VRF11 address 10.255.11.4 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md index bc0d97fb948..5b081dc39e9 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -948,12 +948,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.5 | - | +| VRF11 | 10.255.11.5 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.5 +ip address virtual source-nat vrf VRF11 address 10.255.11.5 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md index 6f2fd1ce8a7..8477af21ef8 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -948,12 +948,14 @@ vrf instance VRF11 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| VRF10 | - | - | -| VRF11 | - | - | +| -------------- | --------------------- | ----------------------- | +| VRF10 | 10.255.10.6 | - | +| VRF11 | 10.255.11.6 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf VRF10 address 10.255.10.6 +ip address virtual source-nat vrf VRF11 address 10.255.11.6 ``` diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg index 2d131cc2dcf..fc5f29fead2 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1a.cfg @@ -221,6 +221,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.3 +ip address virtual source-nat vrf VRF11 address 10.255.11.3 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg index 1dcbc48c00a..004f516eb7e 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf1b.cfg @@ -221,6 +221,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.4 +ip address virtual source-nat vrf VRF11 address 10.255.11.4 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg index b6c97ad25dc..e6165396c57 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2a.cfg @@ -221,6 +221,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.5 +ip address virtual source-nat vrf VRF11 address 10.255.11.5 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg index d465bd68d15..607d2f5d12e 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/configs/dc1-leaf2b.cfg @@ -221,6 +221,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:00:99 ! +ip address virtual source-nat vrf VRF10 address 10.255.10.6 +ip address virtual source-nat vrf VRF11 address 10.255.11.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml index 4d66df780b5..33b2c59c281 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1a.yml @@ -481,6 +481,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.3 - name: VRF11 + ip_address: 10.255.11.3 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml index b043c097b75..9ca6cf68e6b 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf1b.yml @@ -481,6 +481,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.4 - name: VRF11 + ip_address: 10.255.11.4 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml index 7586397005e..8a9af753ba5 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2a.yml @@ -481,6 +481,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.5 - name: VRF11 + ip_address: 10.255.11.5 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml index 1318cda3943..a8724ddc94e 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/intended/structured_configs/dc1-leaf2b.yml @@ -481,6 +481,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.6 - name: VRF11 + ip_address: 10.255.11.6 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md index b0d31aa8432..30d57a10a82 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md @@ -41,7 +41,7 @@ interface Management1 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | +| -------------- | --------------------- | ----------------------- | | TEST_01 | 1.1.1.1 | - | | TEST_02 | 1.1.1.2 | - | | TEST_03 | - | 2001:db8:85a3::8a2e:370:7334 | diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md index fdeadb29ff8..899a62c0604 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md @@ -1545,7 +1545,7 @@ vrf instance TENANT_A_PROJECT02 ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | +| -------------- | --------------------- | ----------------------- | | TEST_01 | 1.1.1.1 | - | | TEST_02 | 1.1.1.2 | - | diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md index afc3b174032..81a011ba422 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md @@ -1227,11 +1227,12 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.6 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md index 9eca84f65a3..f0624475ad2 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md @@ -1227,11 +1227,12 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.7 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md index 6e220d9d805..e26b280e77a 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md @@ -1406,11 +1406,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.8 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md index 552eeab3474..add66c60fe0 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md @@ -1380,11 +1380,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.9 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg index 1a6dcb5a209..387ddb4bc68 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2A.cfg @@ -361,6 +361,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg index cbdb3d381f5..0b3111ee2e2 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-LEAF2B.cfg @@ -361,6 +361,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg index 0830c137139..ed2eae463a2 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3A.cfg @@ -441,6 +441,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg index 243aa26e43b..8683024f7e5 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/configs/DC1-SVC3B.cfg @@ -425,6 +425,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml index f680c8ceb68..d48b8951777 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2A.yml @@ -788,5 +788,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.6 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml index 830e35cd7ab..fede5822f45 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-LEAF2B.yml @@ -788,5 +788,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.7 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml index bc7f495c1eb..b8ed17a7a40 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3A.yml @@ -975,5 +975,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.8 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml index 0b7e9f9844f..ca66b1b3694 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/DC1-SVC3B.yml @@ -954,5 +954,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.9 metadata: platform: vEOS-LAB diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml index a2d87d7c177..05137d98676 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp-empty-filter/cv_server_configlets.yml @@ -494,7 +494,8 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.6\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -666,7 +667,8 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.7\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -1140,13 +1142,14 @@ cvp_configlets: \ vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WAN_Zone vni 14\n \ vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n \ vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n - \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\n!\nip - routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing - vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip - routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf - Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip - prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n - \ seq 20 permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n + \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\nip + address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8\n!\nip routing\nno + ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip + routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf + Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip + routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip prefix-list + PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n seq 20 + permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n \ local-interface Vlan4094\n peer-address 10.255.252.7\n peer-link Port-Channel5\n \ reload-delay mlag 300\n reload-delay non-mlag 330\n!\nip route vrf MGMT 0.0.0.0/0 192.168.200.5\n!\nroute-map RM-CONN-2-BGP permit 10\n match ip address prefix-list @@ -1346,7 +1349,8 @@ cvp_configlets: Tenant_A_WAN_Zone vni 14\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.9\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml index a2d87d7c177..05137d98676 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/intended/structured_configs/cvp/cv_server_configlets.yml @@ -494,7 +494,8 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.6\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -666,7 +667,8 @@ cvp_configlets: vrf Tenant_A_APP_Zone vni 12\n vxlan vrf Tenant_A_DB_Zone vni 13\n vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_C_OP_Zone vni 30\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.7\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_C_OP_Zone\n!\nip prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n @@ -1140,13 +1142,14 @@ cvp_configlets: \ vxlan vrf Tenant_A_OP_Zone vni 10\n vxlan vrf Tenant_A_WAN_Zone vni 14\n \ vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n \ vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n - \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\n!\nip - routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing - vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip - routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf - Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip - prefix-list PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n - \ seq 20 permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n + \ vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address 00:dc:00:00:00:0a\n!\nip + address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8\n!\nip routing\nno + ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip + routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf + Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip + routing vrf Tenant_C_OP_Zone\nip routing vrf Tenant_C_WAN_Zone\n!\nip prefix-list + PL-LOOPBACKS-EVPN-OVERLAY\n seq 10 permit 192.168.255.0/24 eq 32\n seq 20 + permit 192.168.254.0/24 eq 32\n!\nmlag configuration\n domain-id DC1_SVC3\n \ local-interface Vlan4094\n peer-address 10.255.252.7\n peer-link Port-Channel5\n \ reload-delay mlag 300\n reload-delay non-mlag 330\n!\nip route vrf MGMT 0.0.0.0/0 192.168.200.5\n!\nroute-map RM-CONN-2-BGP permit 10\n match ip address prefix-list @@ -1346,7 +1349,8 @@ cvp_configlets: Tenant_A_WAN_Zone vni 14\n vxlan vrf Tenant_A_WEB_Zone vni 11\n vxlan vrf Tenant_B_OP_Zone vni 20\n vxlan vrf Tenant_B_WAN_Zone vni 21\n vxlan vrf Tenant_C_OP_Zone vni 30\n vxlan vrf Tenant_C_WAN_Zone vni 31\n!\nip virtual-router mac-address - 00:dc:00:00:00:0a\n!\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip + 00:dc:00:00:00:0a\n!\nip address virtual source-nat vrf Tenant_A_OP_Zone address + 10.255.1.9\n!\nip routing\nno ip routing vrf MGMT\nip routing vrf Tenant_A_APP_Zone\nip routing vrf Tenant_A_DB_Zone\nip routing vrf Tenant_A_OP_Zone\nip routing vrf Tenant_A_WAN_Zone\nip routing vrf Tenant_A_WEB_Zone\nip routing vrf Tenant_B_OP_Zone\nip routing vrf Tenant_B_WAN_Zone\nip routing vrf Tenant_C_OP_Zone\nip routing vrf diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md index be94cd47837..33f828a4338 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md @@ -1181,15 +1181,17 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| vrf_with_loopbacks_dc1_pod1_only | - | - | -| vrf_with_loopbacks_from_overlapping_pool | - | - | +| -------------- | --------------------- | ----------------------- | +| vrf_with_loopbacks_dc1_pod1_only | 10.102.101.5 | - | +| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.5 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.101.5 | 2001:db8:1::3 | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.5 +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.5 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.5 ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::3 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md index 2104eabb5a2..21522f245e4 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md @@ -858,14 +858,16 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| vrf_with_loopbacks_from_overlapping_pool | - | - | -| vrf_with_loopbacks_from_pod_pools | - | - | +| -------------- | --------------------- | ----------------------- | +| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | - | +| vrf_with_loopbacks_from_pod_pools | 10.101.102.3 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 +ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.102.3 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md index be99ca8a7b6..a8f00d2b361 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md @@ -1145,15 +1145,17 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| vrf_with_loopbacks_dc1_pod1_only | - | - | -| vrf_with_loopbacks_from_overlapping_pool | - | - | +| -------------- | --------------------- | ----------------------- | +| vrf_with_loopbacks_dc1_pod1_only | 10.102.101.4 | - | +| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.4 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.101.4 | 2001:db8:1::2 | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.4 +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.4 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.4 ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::2 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md index fcae259520c..1aab140450c 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md @@ -751,14 +751,16 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| vrf_with_loopbacks_from_overlapping_pool | - | - | -| vrf_with_loopbacks_from_pod_pools | - | - | +| -------------- | --------------------- | ----------------------- | +| vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | - | +| vrf_with_loopbacks_from_pod_pools | 10.101.201.3 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 +ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.201.3 ``` ## EOS CLI Device Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg index 838face75ef..20775f8e76b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD1-LEAF2B.cfg @@ -335,6 +335,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! +ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.5 +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.5 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.5 ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::3 ! diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg index f08d9ae7fcb..66e5bec8c3f 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1-POD2-LEAF1A.cfg @@ -173,6 +173,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 +ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.102.3 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg index c6fbb89eee3..b9971cf1834 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC1.POD1.LEAF2A.cfg @@ -329,6 +329,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! +ip address virtual source-nat vrf vrf_with_loopbacks_dc1_pod1_only address 10.102.101.4 +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.4 ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.101.4 ipv6 address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 2001:db8:1::2 ! diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg index 4d205dd2799..f82bd1c69ba 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/configs/DC2-POD1-LEAF1A.cfg @@ -120,6 +120,8 @@ interface Vxlan1 ! ip virtual-router mac-address 00:1c:73:00:dc:01 ! +ip address virtual source-nat vrf vrf_with_loopbacks_from_overlapping_pool address 10.100.0.3 +ip address virtual source-nat vrf vrf_with_loopbacks_from_pod_pools address 10.101.201.3 ! ip routing ip routing vrf Common_VRF diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml index 00870b43744..89293d13b95 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD1-LEAF2B.yml @@ -812,7 +812,9 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_dc1_pod1_only + ip_address: 10.102.101.5 - name: vrf_with_loopbacks_from_overlapping_pool + ip_address: 10.100.0.5 - name: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.5 ipv6_address: 2001:db8:1::3 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml index eff9970e500..21a32c9ae35 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1-POD2-LEAF1A.yml @@ -473,7 +473,9 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_from_overlapping_pool + ip_address: 10.100.0.3 - name: vrf_with_loopbacks_from_pod_pools + ip_address: 10.101.102.3 metadata: platform: vEOS-LAB domain_list: diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml index ba036d30292..dfa5e976062 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC1.POD1.LEAF2A.yml @@ -774,7 +774,9 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_dc1_pod1_only + ip_address: 10.102.101.4 - name: vrf_with_loopbacks_from_overlapping_pool + ip_address: 10.100.0.4 - name: vrf_with_loopbacks_from_pod_pools ip_address: 10.101.101.4 ipv6_address: 2001:db8:1::2 diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml index 198a1d27118..fc7d932adc6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/intended/structured_configs/DC2-POD1-LEAF1A.yml @@ -334,7 +334,9 @@ vxlan_interface: vni: 1101 virtual_source_nat_vrfs: - name: vrf_with_loopbacks_from_overlapping_pool + ip_address: 10.100.0.3 - name: vrf_with_loopbacks_from_pod_pools + ip_address: 10.101.201.3 vlans: - id: 4092 tenant: system diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg index 9bd3063c92b..40b85219f60 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF1A.cfg @@ -256,6 +256,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing ip routing vrf 12345678 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg index b7149f02e80..5455cf5784c 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2A.cfg @@ -631,6 +631,8 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 +ip address virtual source-nat vrf Tenant_A_OSPF address 10.255.11.10 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg index 1941069343d..bb54b8ab869 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-LEAF2B.cfg @@ -596,6 +596,8 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 +ip address virtual source-nat vrf Tenant_A_OSPF address 10.255.11.11 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg index e4ae3b818c4..dad517d8a80 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3A.cfg @@ -836,6 +836,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg index 91eca930f9b..182a6387d61 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-SVC3B.cfg @@ -802,6 +802,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg index a5cc9399554..1856fb9f876 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1A.cfg @@ -464,6 +464,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.21 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg index 490277f4ce1..b696275a42d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1_UNDEPLOYED_LEAF1B.cfg @@ -464,6 +464,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.22 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg index dd952355427..ad49de8ad34 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg @@ -452,6 +452,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.8 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.8 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.8 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.8 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.8 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.8 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.8 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.8 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.8 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg index 1b104f327ae..504fcf2c78c 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg @@ -771,6 +771,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.3 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.3 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.3 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.3 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.3 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.3 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.3 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.3 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.3 ! ip access-list standard RP_ACL_VRF_OVERRIDE 10 permit 232.1.0.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg index 6adc7f204e6..495fcda8c36 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg @@ -771,6 +771,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.4 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.4 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.4 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.4 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.4 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.4 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.4 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.4 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.4 ! ip access-list standard RP_ACL_VRF_OVERRIDE 10 permit 232.1.0.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg index ef8ccadc595..a491bdd18fc 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg @@ -523,6 +523,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.5 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.5 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.5 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.5 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.5 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.5 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.5 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.5 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.5 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg index af472fc013d..4e5477ce952 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg @@ -545,6 +545,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.6 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.6 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.6 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.6 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.6 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.6 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.6 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.6 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.6 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg index bd5e3b71081..13c5ba5e2e6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg @@ -545,6 +545,15 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_DISABLED_330_331 address 10.255.3.7 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_130_131 address 10.255.1.7 +ip address virtual source-nat vrf TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 address 10.255.2.7 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_DISABLED_240_241 address 10.255.42.7 +ip address virtual source-nat vrf TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 address 10.255.41.7 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE address 10.255.55.7 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES address 10.255.60.7 +ip address virtual source-nat vrf TEN_E_L3_MULTICAST_TRANSIT address 10.255.52.7 +ip address virtual source-nat vrf TEN_E_PEG_L3_MULTICAST_ENABLED address 10.255.51.7 ! ip access-list standard RPS_ACL_VRF_Tenant_E_2 10 permit 232.0.136.0/21 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg index 7287b0129d8..56b3d209d5a 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/evpn_services_l2_only_false.cfg @@ -418,6 +418,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.109 ! ip access-list TEST-IPV4-ACL-WITH-IP-FIELDS-IN_Vlan110 15 deny ip any host 10.1.10.1 diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml index 5f72cc707c7..7a34304cc8d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF1A.yml @@ -587,5 +587,6 @@ vxlan_interface: vni: 41 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.9 metadata: platform: VEOS diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml index 348691fe571..e7774342bbb 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2A.yml @@ -1269,6 +1269,8 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.10 - name: Tenant_A_OSPF + ip_address: 10.255.11.10 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml index 1278aa7f0d7..1ae794bf77a 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-LEAF2B.yml @@ -1209,6 +1209,8 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.11 - name: Tenant_A_OSPF + ip_address: 10.255.11.11 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml index 5c14e763e20..bad628b1e51 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3A.yml @@ -1636,6 +1636,7 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.12 monitor_sessions: - name: MonitoringSessionServer18WithDest sources: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml index 813730f37c5..1c0517d2118 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-SVC3B.yml @@ -1588,6 +1588,7 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.13 monitor_sessions: - name: MonitoringSessionServer18WithDest sources: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml index 42327098c82..fb0e890348a 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1A.yml @@ -1064,5 +1064,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.21 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml index 5aff6f9c889..2b78109cb8f 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1_UNDEPLOYED_LEAF1B.yml @@ -1064,5 +1064,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.22 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml index e87211f06c6..11433fa4e1d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml @@ -1144,14 +1144,23 @@ vxlan_interface: vni: 51 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.8 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.8 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.8 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.8 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.8 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.8 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.8 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.8 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.8 standard_access_lists: - name: RPS_ACL_VRF_Tenant_E_2 sequence_numbers: diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml index e0657aaf309..c0353f2883d 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml @@ -1616,14 +1616,23 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.3 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.3 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.3 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.3 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.3 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.3 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.3 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.3 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.3 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml index 07c9fdecc5b..bcf22d219da 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml @@ -1616,14 +1616,23 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.4 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.4 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.4 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.4 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.4 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.4 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.4 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.4 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.4 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml index 918cf7f457d..cf82bfb556a 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml @@ -1285,14 +1285,23 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.5 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.5 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.5 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.5 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.5 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.5 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.5 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.5 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.5 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml index 7a597a269a5..c18706a98cf 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml @@ -1317,14 +1317,23 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.6 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.6 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.6 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.6 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.6 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.6 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.6 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.6 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.6 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml index a0bb40485d1..75c8f21c2f2 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml @@ -1317,14 +1317,23 @@ vxlan_interface: multicast_group: 232.0.96.50 virtual_source_nat_vrfs: - name: TEN_C_L3_MULTICAST_DISABLED_330_331 + ip_address: 10.255.3.7 - name: TEN_C_L3_MULTICAST_ENABLED_130_131 + ip_address: 10.255.1.7 - name: TEN_C_L3_MULTICAST_ENABLED_230_DISABLED_231 + ip_address: 10.255.2.7 - name: TEN_D_L3_MULTICAST_DISABLED_240_241 + ip_address: 10.255.42.7 - name: TEN_D_L3_MULTICAST_ENABLED_140_DISABLED_141 + ip_address: 10.255.41.7 - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE + ip_address: 10.255.55.7 - name: TEN_E_L3_MULTICAST_EVPN_PEG_RP_NODES + ip_address: 10.255.60.7 - name: TEN_E_L3_MULTICAST_TRANSIT + ip_address: 10.255.52.7 - name: TEN_E_PEG_L3_MULTICAST_ENABLED + ip_address: 10.255.51.7 router_pim_sparse_mode: vrfs: - name: TEN_E_L3_MULTICAST_ENABLED_PEG_OVERRIDE diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml index 895f103545d..8306cec2ab9 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/evpn_services_l2_only_false.yml @@ -959,3 +959,4 @@ vxlan_interface: vni: 40 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.109 diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml index 6d4b6d28075..9188eb29a44 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1a.yml @@ -538,7 +538,9 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.3 - name: VRF11 + ip_address: 10.255.11.3 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml index 1adca6f447c..32822669cc7 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf1b.yml @@ -601,7 +601,9 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.4 - name: VRF11 + ip_address: 10.255.11.4 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml index 4e9013d969e..f168db9619a 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2a.yml @@ -554,7 +554,9 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.5 - name: VRF11 + ip_address: 10.255.11.5 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml index 57a0ed8b80b..d9ad5c2500f 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc1-leaf2b.yml @@ -554,7 +554,9 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.6 - name: VRF11 + ip_address: 10.255.11.6 metadata: platform: vEOS-lab dns_domain: dc1.local diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml index 5c32495b834..dc39ec13cc6 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1a.yml @@ -461,6 +461,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.13 - name: VRF11 + ip_address: 10.255.11.13 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml index a4d7fcc9fbb..a8f7be675c7 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf1b.yml @@ -461,6 +461,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.14 - name: VRF11 + ip_address: 10.255.11.14 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml index 8281094ed41..dfedb507754 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2a.yml @@ -532,6 +532,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.15 - name: VRF11 + ip_address: 10.255.11.15 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml index d5d35af2152..f8917deb9d5 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf2b.yml @@ -532,6 +532,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.16 - name: VRF11 + ip_address: 10.255.11.16 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml index 8d7a224670d..cd910ec9575 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3a.arista.com.yml @@ -442,6 +442,8 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.17 - name: VRF11 + ip_address: 10.255.11.17 metadata: platform: vEOS-lab diff --git a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml index efa286289d7..317d0acbe0c 100644 --- a/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml +++ b/ansible_collections/arista/avd/molecule/eos_validate_state/intended/structured_configs/dc2-leaf3b.arista.com.yml @@ -442,7 +442,9 @@ vxlan_interface: vni: 11 virtual_source_nat_vrfs: - name: VRF10 + ip_address: 10.255.10.18 - name: VRF11 + ip_address: 10.255.11.18 metadata: platform: vEOS-lab interface_defaults: diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index 01adcf39055..4f097db211f 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1257,13 +1257,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.10 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index 40a563b4a74..21b5eea45b8 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1257,13 +1257,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.11 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md index a94a2d54b57..fba46fc322c 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1732,11 +1732,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.12 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ``` diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md index f6bbe2bf798..f552bb3b8fc 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1732,11 +1732,12 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.13 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ``` diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg index d3920416d61..b0ed1e7ca9f 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg @@ -393,6 +393,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.10 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg index 279f2782f18..187dd5c7d14 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg @@ -393,6 +393,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.11 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg index 15aab141804..2e79f6f817d 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3A.cfg @@ -676,6 +676,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg index 99f2095c22e..d8332788ad5 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/configs/DC1-SVC3B.cfg @@ -676,6 +676,7 @@ interface Vxlan1 ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip routing no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index a082f2c0352..157f375a496 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -827,5 +827,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.10 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index 312d4a02e12..504e77df06e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -827,5 +827,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.11 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index a2a0e5bdfed..728dd1562d7 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1393,5 +1393,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.12 metadata: platform: 7050SX3 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index 0df33bdd70e..90763468ea1 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1393,5 +1393,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.13 metadata: platform: 7050SX3 diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index def2510908f..13086a634d6 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1329,13 +1329,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.6 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index 807ad2bc6d3..abf085618ee 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1329,13 +1329,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.7 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md index 6df2ae96bf0..ebeb5f4a7c2 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md @@ -1248,13 +1248,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.12 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md index 9e2361a7ce9..bc645063d95 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md @@ -1248,13 +1248,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.13 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md index 3b889a7c605..c213eed4ee4 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md @@ -1238,13 +1238,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.14 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.14 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md index 2981768137d..d0ff3fe415d 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md @@ -1238,13 +1238,14 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.15 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.15 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md index 9634405bcad..eaca26bed8a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1559,13 +1559,14 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.8 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md index 1eefcb13594..0256cb01e3a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1533,13 +1533,14 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | -| Tenant_A_OP_Zone | - | - | +| -------------- | --------------------- | ----------------------- | +| Tenant_A_OP_Zone | 10.255.1.9 | - | ### Virtual Source NAT Configuration ```eos ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ``` ## Platform diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg index 57120b70b48..41919bdf692 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2A.cfg @@ -399,6 +399,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.6 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg index 05dab241f07..4f57b6894fa 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF2B.cfg @@ -399,6 +399,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.7 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg index b96c9a64c72..e83832c7b0e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3A.cfg @@ -335,6 +335,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.12 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg index 6ea9b11234b..f0ae64a5c02 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF3B.cfg @@ -335,6 +335,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.13 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg index 7cf196512e5..028247006f6 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4A.cfg @@ -328,6 +328,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.14 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg index 5dcf7adaae4..3cfe012dfca 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-LEAF4B.cfg @@ -328,6 +328,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.15 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg index a0c9b2f363a..86d81f3091c 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3A.cfg @@ -544,6 +544,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.8 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg index 6c5ab1e06f6..191fbadb27c 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/configs/DC1-SVC3B.cfg @@ -528,6 +528,7 @@ hardware tcam ! ip virtual-router mac-address 00:dc:00:00:00:0a ! +ip address virtual source-nat vrf Tenant_A_OP_Zone address 10.255.1.9 ! ip routing ipv6 interfaces no ip routing vrf MGMT diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml index 099adb08b47..1a365e4af77 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2A.yml @@ -908,5 +908,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.6 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml index 86a7da9346a..b4c7b462794 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF2B.yml @@ -908,5 +908,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.7 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml index 4ae5a4a0cca..8c26d5716a6 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3A.yml @@ -781,5 +781,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.12 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml index 75b8b88542a..3dff4843beb 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF3B.yml @@ -781,5 +781,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.13 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml index 03ff1fbc3da..3fdc7f5bd5a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4A.yml @@ -767,5 +767,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.14 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml index 8d66cfd5e71..875c2e16199 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-LEAF4B.yml @@ -767,5 +767,6 @@ vxlan_interface: vni: 30 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.15 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml index 221dc8d6eba..892d97da4d0 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3A.yml @@ -1203,5 +1203,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.8 metadata: platform: 7280R diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml index c6206796215..0dc3336a19f 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/intended/structured_configs/DC1-SVC3B.yml @@ -1182,5 +1182,6 @@ vxlan_interface: vni: 31 virtual_source_nat_vrfs: - name: Tenant_A_OP_Zone + ip_address: 10.255.1.9 metadata: platform: 7280R diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 index 2f972fb7863..dce3463d9c9 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 @@ -11,7 +11,7 @@ ### Virtual Source NAT Summary | Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | +| -------------- | --------------------- | ----------------------- | {% for vrf in virtual_source_nat_vrfs | arista.avd.natural_sort('name') %} | {{ vrf.name }} | {{ vrf.ip_address | arista.avd.default("-") }} | {{ vrf.ipv6_address | arista.avd.default("-") }} | {% endfor %} diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py index bbe42f0d553..372c133cffe 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py @@ -46,7 +46,7 @@ def virtual_source_nat_vrfs(self: AvdStructuredConfigNetworkServices) -> list | primary_key="name", new_dict={ "name": vrf, - "ip_address": loopback_interface["ip_address"].split("/", maxsplit=1)[0] if "ipv6_address" in loopback_interface else None, + "ip_address": loopback_interface["ip_address"].split("/", maxsplit=1)[0] if "ip_address" in loopback_interface else None, "ipv6_address": loopback_interface["ipv6_address"].split("/", maxsplit=1)[0] if "ipv6_address" in loopback_interface else None, }, context="virtual_source_nat_vrfs", From 04cc07728d42ec3a72de17249616ddd755473df0 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Wed, 17 Jul 2024 17:02:33 +0530 Subject: [PATCH 03/24] editing description --- .../docs/tables/network-services-vrfs-settings.md | 14 +++++++------- .../_eos_designs/schema/eos_designs.schema.yml | 9 +++++---- .../defs_network_services.schema.yml | 8 ++++---- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index 679fe1e36ab..44facd95de0 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -31,9 +31,9 @@ | [        vtep_diagnostic](## ".[].vrfs.[].vtep_diagnostic") | Dictionary | | | | Enable VTEP Network diagnostics.
This will create a loopback with virtual source-nat enable to perform diagnostics from the switch.
| | [          loopback](## ".[].vrfs.[].vtep_diagnostic.loopback") | Integer | | | Min: 2
Max: 2100 | Loopback interface number, required when vtep_diagnotics defined.
| | [          loopback_description](## ".[].vrfs.[].vtep_diagnostic.loopback_description") | String | | | | Provide a custom description for loopback interface. | - | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this ranged and assignedto each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| - | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range is set.
| - | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, ptional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| + | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| + | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set.
| + | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | | | | POD name. | | [              ipv4_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv4_pool") | String | | | | IPv4_address/Mask. | | [              ipv6_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv6_pool") | String | | | | IPv6_address/Mask. | @@ -184,17 +184,17 @@ loopback_description: # IPv4_address/Mask. - # Loopback ip range, a unique ip is derived from this ranged and assignedto each l3 leaf based on it's unique id. + # Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id. # Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ip_range: # IPv6_address/Mask. - # Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id. - # Loopback is not created unless loopback_ipv6_range is set. + # Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id. + # Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. loopback_ipv6_range: # For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. - # This only takes effect when loopback_ip_range is not defined, ptional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). + # This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). loopback_ip_pools: # POD name. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 327c34961fd..896a82caeff 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -6104,7 +6104,7 @@ $defs: description: 'IPv4_address/Mask. Loopback ip range, a unique ip is derived from this ranged and - assignedto each l3 leaf based on it''s unique id. + assigned to each l3 leaf based on it''s unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. @@ -6115,9 +6115,10 @@ $defs: description: 'IPv6_address/Mask. Loopback ipv6 range, a unique ipv6 is derived from this ranged - and assignedto each l3 leaf based on it''s unique id. + and assigned to each l3 leaf based on it''s unique id. - Loopback is not created unless loopback_ipv6_range is set. + Loopback is not created unless loopback_ipv6_range or loopback_ip_pools + are set. ' loopback_ip_pools: @@ -6126,7 +6127,7 @@ $defs: can be set per POD to avoid overlaps. This only takes effect when loopback_ip_range is not defined, - ptional (loopback is not created unless loopback_ip_range or + optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). ' diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index b5bd89ae4f8..915bbadb174 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -430,19 +430,19 @@ $defs: type: str description: | IPv4_address/Mask. - Loopback ip range, a unique ip is derived from this ranged and assignedto each l3 leaf based on it's unique id. + Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ipv6_range: type: str description: | IPv6_address/Mask. - Loopback ipv6 range, a unique ipv6 is derived from this ranged and assignedto each l3 leaf based on it's unique id. - Loopback is not created unless loopback_ipv6_range is set. + Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id. + Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. loopback_ip_pools: type: list description: | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. - This only takes effect when loopback_ip_range is not defined, ptional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). + This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). items: type: dict keys: From 38aa0d336e53f95bcb56ee413e44a1c03564fbe8 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Wed, 17 Jul 2024 17:20:56 +0530 Subject: [PATCH 04/24] fixing code --- .../network_services/loopback_interfaces.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index 5e3b6d9a669..df74b2e4243 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -82,17 +82,15 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic loopback_ipv4_pool = "" loopback_ipv6_pool = "" + pod_name = self.shared_utils.pod_name + loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") if (loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None: - pod_name = self.shared_utils.pod_name - loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") if pod_name and loopback_ip_pools: loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") if (loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None: - pod_name = self.shared_utils.pod_name - loopback_ipv6_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") - if pod_name and loopback_ipv6_pools: - loopback_ipv6_pool = get_item(loopback_ipv6_pools, "pod", pod_name, default={}).get("ipv6_pool") + if pod_name and loopback_ip_pools: + loopback_ipv6_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv6_pool") if not loopback_ipv4_pool and not loopback_ipv6_pool: return None From 21b2519d49cd220d9ccc4a352b4a642eda979bc0 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 19 Jul 2024 17:05:03 +0530 Subject: [PATCH 05/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: laxmikantchintakindi <159624484+laxmikantchintakindi@users.noreply.github.com> --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 915bbadb174..18e27365b3f 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -436,7 +436,7 @@ $defs: type: str description: | IPv6_address/Mask. - Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id. + Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id. Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. loopback_ip_pools: type: list From f704b8aaefc5463fefdd6dea82d1b44ff7d0c196 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 19 Jul 2024 17:05:12 +0530 Subject: [PATCH 06/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: laxmikantchintakindi <159624484+laxmikantchintakindi@users.noreply.github.com> --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 18e27365b3f..414b503ee49 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -430,7 +430,7 @@ $defs: type: str description: | IPv4_address/Mask. - Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id. + Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ipv6_range: type: str From 44a77d9c20ad0f14699538bc904601987a171786 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:37:28 +0000 Subject: [PATCH 07/24] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../eos_designs/docs/tables/network-services-vrfs-settings.md | 4 ++-- python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index 44facd95de0..dbeba747787 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -32,7 +32,7 @@ | [          loopback](## ".[].vrfs.[].vtep_diagnostic.loopback") | Integer | | | Min: 2
Max: 2100 | Loopback interface number, required when vtep_diagnotics defined.
| | [          loopback_description](## ".[].vrfs.[].vtep_diagnostic.loopback_description") | String | | | | Provide a custom description for loopback interface. | | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| - | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set.
| + | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set.
| | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | | | | POD name. | | [              ipv4_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv4_pool") | String | | | | IPv4_address/Mask. | @@ -189,7 +189,7 @@ loopback_ip_range: # IPv6_address/Mask. - # Loopback ipv6 range, a unique ipv6 is derived from this ranged and assigned to each l3 leaf based on it's unique id. + # Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id. # Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. loopback_ipv6_range: diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 896a82caeff..2db4b878a51 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -6114,7 +6114,7 @@ $defs: type: str description: 'IPv6_address/Mask. - Loopback ipv6 range, a unique ipv6 is derived from this ranged + Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it''s unique id. Loopback is not created unless loopback_ipv6_range or loopback_ip_pools From bc551403c487f801311ce8af7d7a78e6f0d7883f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 08:15:19 +0000 Subject: [PATCH 08/24] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../eos_designs/docs/tables/network-services-vrfs-settings.md | 4 ++-- python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index dbeba747787..f259f6c8d2d 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -31,7 +31,7 @@ | [        vtep_diagnostic](## ".[].vrfs.[].vtep_diagnostic") | Dictionary | | | | Enable VTEP Network diagnostics.
This will create a loopback with virtual source-nat enable to perform diagnostics from the switch.
| | [          loopback](## ".[].vrfs.[].vtep_diagnostic.loopback") | Integer | | | Min: 2
Max: 2100 | Loopback interface number, required when vtep_diagnotics defined.
| | [          loopback_description](## ".[].vrfs.[].vtep_diagnostic.loopback_description") | String | | | | Provide a custom description for loopback interface. | - | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| + | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set.
| | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | | | | POD name. | @@ -184,7 +184,7 @@ loopback_description: # IPv4_address/Mask. - # Loopback ip range, a unique ip is derived from this ranged and assigned to each l3 leaf based on it's unique id. + # Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. # Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ip_range: diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 2db4b878a51..320ddd1bf9a 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -6103,7 +6103,7 @@ $defs: type: str description: 'IPv4_address/Mask. - Loopback ip range, a unique ip is derived from this ranged and + Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it''s unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools From e1e3309a1f87d766155ae560807a4daa8046389d Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Thu, 25 Jul 2024 21:28:58 +0530 Subject: [PATCH 09/24] addressing comments --- .../dual-dc-l3ls/documentation/devices/dc1-leaf1a.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc1-leaf1b.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc1-leaf2a.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc1-leaf2b.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc2-leaf1a.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc2-leaf1b.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc2-leaf2a.md | 4 ++-- .../dual-dc-l3ls/documentation/devices/dc2-leaf2b.md | 4 ++-- .../single-dc-l3ls/documentation/devices/dc1-leaf1a.md | 4 ++-- .../single-dc-l3ls/documentation/devices/dc1-leaf1b.md | 4 ++-- .../single-dc-l3ls/documentation/devices/dc1-leaf2a.md | 4 ++-- .../single-dc-l3ls/documentation/devices/dc1-leaf2b.md | 4 ++-- .../documentation/devices/virtual-source-nat.md | 7 +++++-- .../intended/configs/virtual-source-nat.cfg | 2 ++ .../inventory/host_vars/virtual-source-nat.yml | 3 +++ .../documentation/devices/host1.md | 4 ++-- .../documentation/devices/DC1-LEAF2A.md | 4 ++-- .../documentation/devices/DC1-LEAF2B.md | 4 ++-- .../documentation/devices/DC1-SVC3A.md | 4 ++-- .../documentation/devices/DC1-SVC3B.md | 4 ++-- .../documentation/devices/DC1-POD1-LEAF2B.md | 4 ++-- .../documentation/devices/DC1-POD2-LEAF1A.md | 4 ++-- .../documentation/devices/DC1.POD1.LEAF2A.md | 4 ++-- .../documentation/devices/DC2-POD1-LEAF1A.md | 4 ++-- .../documentation/devices/DC1-LEAF2A.md | 4 ++-- .../documentation/devices/DC1-LEAF2B.md | 4 ++-- .../documentation/devices/DC1-SVC3A.md | 4 ++-- .../documentation/devices/DC1-SVC3B.md | 4 ++-- .../documentation/devices/DC1-LEAF2A.md | 4 ++-- .../documentation/devices/DC1-LEAF2B.md | 4 ++-- .../documentation/devices/DC1-LEAF3A.md | 4 ++-- .../documentation/devices/DC1-LEAF3B.md | 4 ++-- .../documentation/devices/DC1-LEAF4A.md | 4 ++-- .../documentation/devices/DC1-LEAF4B.md | 4 ++-- .../documentation/devices/DC1-SVC3A.md | 4 ++-- .../documentation/devices/DC1-SVC3B.md | 4 ++-- .../j2templates/documentation/virtual-source-nat-vrfs.j2 | 4 ++-- .../network_services/loopback_interfaces.py | 2 -- 38 files changed, 78 insertions(+), 72 deletions(-) diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md index 3115a8cbdf4..02f0be8bf39 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -886,8 +886,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.3 | - | | VRF11 | 10.255.11.3 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md index 1f317de78cc..bba0f537310 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -886,8 +886,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.4 | - | | VRF11 | 10.255.11.4 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md index 89c4df5cc3f..abfc67ac6d6 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -944,8 +944,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.5 | - | | VRF11 | 10.255.11.5 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md index f0218f1f0ed..0e3ebd1ca1d 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -944,8 +944,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.6 | - | | VRF11 | 10.255.11.6 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md index 9b949b03bbe..01a9cdd0961 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1a.md @@ -886,8 +886,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.13 | - | | VRF11 | 10.255.11.13 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md index e075bc2ee65..e00d556795a 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf1b.md @@ -886,8 +886,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.14 | - | | VRF11 | 10.255.11.14 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md index e96e01f1075..baffb220bc1 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2a.md @@ -944,8 +944,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.15 | - | | VRF11 | 10.255.11.15 | - | diff --git a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md index 72907e7f08a..9d78702d2a3 100644 --- a/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md +++ b/ansible_collections/arista/avd/examples/dual-dc-l3ls/documentation/devices/dc2-leaf2b.md @@ -944,8 +944,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.16 | - | | VRF11 | 10.255.11.16 | - | diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md index 4c7136c3e25..feefdc5ab10 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1a.md @@ -947,8 +947,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.3 | - | | VRF11 | 10.255.11.3 | - | diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md index 679d6a46e97..ae4f9a21518 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf1b.md @@ -947,8 +947,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.4 | - | | VRF11 | 10.255.11.4 | - | diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md index 5b081dc39e9..3ae3c63671a 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2a.md @@ -947,8 +947,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.5 | - | | VRF11 | 10.255.11.5 | - | diff --git a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md index 8477af21ef8..cf809c72c03 100644 --- a/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md +++ b/ansible_collections/arista/avd/examples/single-dc-l3ls/documentation/devices/dc1-leaf2b.md @@ -947,8 +947,8 @@ vrf instance VRF11 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | VRF10 | 10.255.10.6 | - | | VRF11 | 10.255.11.6 | - | diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md index 30d57a10a82..0dc0bf10e35 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md @@ -40,11 +40,12 @@ interface Management1 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | TEST_01 | 1.1.1.1 | - | | TEST_02 | 1.1.1.2 | - | | TEST_03 | - | 2001:db8:85a3::8a2e:370:7334 | +| TEST_04 | 1.1.1.3 | 2001:db8:85a3::8a2e:370:7335 | ### Virtual Source NAT Configuration @@ -53,4 +54,6 @@ interface Management1 ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 +ip address virtual source-nat vrf TEST_04 address 1.1.1.3 +ipv6 address virtual source-nat vrf TEST_04 address 2001:db8:85a3::8a2e:370:7335 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg index 8dcafc09dff..ce482e001bd 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg @@ -15,5 +15,7 @@ interface Management1 ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 +ip address virtual source-nat vrf TEST_04 address 1.1.1.3 +ipv6 address virtual source-nat vrf TEST_04 address 2001:db8:85a3::8a2e:370:7335 ! end diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml index e85d35ff5ea..f5998685552 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/virtual-source-nat.yml @@ -6,3 +6,6 @@ virtual_source_nat_vrfs: ip_address: 1.1.1.2 - name: TEST_03 ipv6_address: 2001:db8:85a3::8a2e:370:7334 + - name: TEST_04 + ipv6_address: 2001:db8:85a3::8a2e:370:7335 + ip_address: 1.1.1.3 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md index 899a62c0604..614ec02f7e8 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/documentation/devices/host1.md @@ -1544,8 +1544,8 @@ vrf instance TENANT_A_PROJECT02 ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | TEST_01 | 1.1.1.1 | - | | TEST_02 | 1.1.1.2 | - | diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md index 81a011ba422..326606de38b 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2A.md @@ -1226,8 +1226,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.6 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md index f0624475ad2..1a4c8dc71c4 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-LEAF2B.md @@ -1226,8 +1226,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.7 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md index e26b280e77a..46b6e781569 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3A.md @@ -1405,8 +1405,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.8 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md index add66c60fe0..2874c7f7d25 100644 --- a/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/eos_config_deploy_cvp/documentation/devices/DC1-SVC3B.md @@ -1379,8 +1379,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.9 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md index 33f828a4338..e675eb7aa5b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD1-LEAF2B.md @@ -1180,8 +1180,8 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | vrf_with_loopbacks_dc1_pod1_only | 10.102.101.5 | - | | vrf_with_loopbacks_from_overlapping_pool | 10.100.0.5 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.101.5 | 2001:db8:1::3 | diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md index 21522f245e4..3af0d3ecd12 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1-POD2-LEAF1A.md @@ -857,8 +857,8 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.102.3 | - | diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md index a8f00d2b361..2dfde088caf 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC1.POD1.LEAF2A.md @@ -1144,8 +1144,8 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | vrf_with_loopbacks_dc1_pod1_only | 10.102.101.4 | - | | vrf_with_loopbacks_from_overlapping_pool | 10.100.0.4 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.101.4 | 2001:db8:1::2 | diff --git a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md index 1aab140450c..c62771a80cb 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md +++ b/ansible_collections/arista/avd/molecule/eos_designs-twodc-5stage-clos/documentation/devices/DC2-POD1-LEAF1A.md @@ -750,8 +750,8 @@ vrf instance vrf_with_loopbacks_from_pod_pools ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | vrf_with_loopbacks_from_overlapping_pool | 10.100.0.3 | - | | vrf_with_loopbacks_from_pod_pools | 10.101.201.3 | - | diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index 4f097db211f..c49b094e648 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1256,8 +1256,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.10 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index 21b5eea45b8..f8390d8417a 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1256,8 +1256,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.11 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md index fba46fc322c..8ae424721be 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1731,8 +1731,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.12 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md index f552bb3b8fc..7778ae0e1ae 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_ebgp_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1731,8 +1731,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.13 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md index 13086a634d6..f25770e175f 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2A.md @@ -1328,8 +1328,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.6 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md index abf085618ee..633028b7ecd 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF2B.md @@ -1328,8 +1328,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.7 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md index ebeb5f4a7c2..0a4808f108e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3A.md @@ -1247,8 +1247,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.12 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md index bc645063d95..42cb1dfbd88 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF3B.md @@ -1247,8 +1247,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.13 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md index c213eed4ee4..4aa0084f55e 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4A.md @@ -1237,8 +1237,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.14 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md index d0ff3fe415d..a43e7a5f000 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-LEAF4B.md @@ -1237,8 +1237,8 @@ vrf instance Tenant_C_OP_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.15 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md index eaca26bed8a..10478beaed4 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3A.md @@ -1558,8 +1558,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.8 | - | ### Virtual Source NAT Configuration diff --git a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md index 0256cb01e3a..f9133d0892b 100644 --- a/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md +++ b/ansible_collections/arista/avd/molecule/evpn_underlay_rfc5549_overlay_ebgp/documentation/devices/DC1-SVC3B.md @@ -1532,8 +1532,8 @@ vrf instance Tenant_C_WAN_Zone ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | | Tenant_A_OP_Zone | 10.255.1.9 | - | ### Virtual Source NAT Configuration diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 index dce3463d9c9..f1501bcc7f7 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/documentation/virtual-source-nat-vrfs.j2 @@ -10,8 +10,8 @@ ### Virtual Source NAT Summary -| Source NAT VRF | Source NAT IP Address | Source NAT IPV6 Address | -| -------------- | --------------------- | ----------------------- | +| Source NAT VRF | Source NAT IPv4 Address | Source NAT IPv6 Address | +| -------------- | ----------------------- | ----------------------- | {% for vrf in virtual_source_nat_vrfs | arista.avd.natural_sort('name') %} | {{ vrf.name }} | {{ vrf.ip_address | arista.avd.default("-") }} | {{ vrf.ipv6_address | arista.avd.default("-") }} | {% endfor %} diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index df74b2e4243..879dec829c5 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -80,8 +80,6 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic if (loopback := get(vrf, "vtep_diagnostic.loopback")) is None: return None - loopback_ipv4_pool = "" - loopback_ipv6_pool = "" pod_name = self.shared_utils.pod_name loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") if (loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None: From 4b8b8c8ba902ebf68afdc995520635d6cd94f98b Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Tue, 30 Jul 2024 15:31:28 +0530 Subject: [PATCH 10/24] fixing template --- .../documentation/devices/virtual-source-nat.md | 2 +- .../intended/configs/virtual-source-nat.cfg | 2 +- .../j2templates/eos/virtual-source-nat-vrfs.j2 | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md index 0dc0bf10e35..9fd5a89e101 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/virtual-source-nat.md @@ -53,7 +53,7 @@ interface Management1 ! ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 -ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ip address virtual source-nat vrf TEST_04 address 1.1.1.3 +ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ipv6 address virtual source-nat vrf TEST_04 address 2001:db8:85a3::8a2e:370:7335 ``` diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg index ce482e001bd..2bcfa931763 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/virtual-source-nat.cfg @@ -14,8 +14,8 @@ interface Management1 ! ip address virtual source-nat vrf TEST_01 address 1.1.1.1 ip address virtual source-nat vrf TEST_02 address 1.1.1.2 -ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ip address virtual source-nat vrf TEST_04 address 1.1.1.3 +ipv6 address virtual source-nat vrf TEST_03 address 2001:db8:85a3::8a2e:370:7334 ipv6 address virtual source-nat vrf TEST_04 address 2001:db8:85a3::8a2e:370:7335 ! end diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 index 53ff4518449..acd4385147d 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/virtual-source-nat-vrfs.j2 @@ -6,12 +6,18 @@ {# eos - virtual source nat vrfs #} {% if virtual_source_nat_vrfs is arista.avd.defined %} ! +{% set ipv4_address_list = [] %} +{% set ipv6_address_list = [] %} {% for vrf in virtual_source_nat_vrfs | arista.avd.natural_sort('name') %} {% if vrf.ip_address is arista.avd.defined %} -ip address virtual source-nat vrf {{ vrf.name }} address {{ vrf.ip_address }} +{% do ipv4_address_list.append("ip address virtual source-nat vrf " + vrf.name + " address " + vrf.ip_address) %} {% endif %} {% if vrf.ipv6_address is arista.avd.defined %} -ipv6 address virtual source-nat vrf {{ vrf.name }} address {{ vrf.ipv6_address }} +{% do ipv6_address_list.append("ipv6 address virtual source-nat vrf " + vrf.name + " address " + vrf.ipv6_address) %} {% endif %} {% endfor %} +{% set ip_addresses = ipv4_address_list + ipv6_address_list %} +{% for ip_address in ip_addresses %} +{{ ip_address }} +{% endfor %} {% endif %} From f4d4b8cd8f6f4dd6e65698c8a9903ecf62a854aa Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 1 Aug 2024 07:36:12 +0000 Subject: [PATCH 11/24] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index 4d734281127..6efa3f6385a 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -17786,6 +17786,9 @@ keys: ip_address: type: str description: IPv4 Address. + ipv6_address: + type: str + description: IPv6 Address. vlan_interfaces: type: list primary_key: name From 74f48861625c0e19093bbd166d165fd92b3b817e Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Mon, 5 Aug 2024 20:19:00 +0530 Subject: [PATCH 12/24] fixing CI --- .../pyavd/_eos_designs/ip_addressing/__init__.py | 3 ++- .../network_services/loopback_interfaces.py | 10 ++++------ .../network_services/virtual_source_nat_vrfs.py | 1 + 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py index 0dc25fbf5d8..b1640111fa3 100644 --- a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py +++ b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py @@ -314,7 +314,8 @@ def vrf_loopback_ip(self, pool: str) -> str: def vrf_loopback_ipv6(self, pool: str) -> str: """ Return IP address for a Loopback interface based on the given pool. - Default offset from pool is `id + loopback_ipv6_offset` + + Default offset from pool is `id + loopback_ipv6_offset`. Used for "vtep_diagnostic.loopback". """ diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index e3aeaa1a767..51b505293e1 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -83,13 +83,11 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic pod_name = self.shared_utils.pod_name loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") - if (loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None: - if pod_name and loopback_ip_pools: - loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") + if ((loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None) and (pod_name and loopback_ip_pools): + loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") - if (loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None: - if pod_name and loopback_ip_pools: - loopback_ipv6_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv6_pool") + if ((loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None) and (pod_name and loopback_ip_pools): + loopback_ipv6_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv6_pool") if not loopback_ipv4_pool and not loopback_ipv6_pool: return None diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py index 817f8ff9052..32cf3583843 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING from pyavd._utils import append_if_not_duplicate, strip_null_from_data + from .utils import UtilsMixin if TYPE_CHECKING: From 5c95e208cc4a36b73597bf95490e73977bdacda0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:16:12 +0000 Subject: [PATCH 13/24] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../network_services/virtual_source_nat_vrfs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py index f93a228deb8..64c0f89ce6b 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/virtual_source_nat_vrfs.py @@ -50,7 +50,6 @@ def virtual_source_nat_vrfs(self: AvdStructuredConfigNetworkServices) -> list | "name": vrf, "ip_address": get_ip_from_ip_prefix(loopback_interface["ip_address"]) if "ip_address" in loopback_interface else None, "ipv6_address": get_ip_from_ip_prefix(loopback_interface["ipv6_address"]) if "ipv6_address" in loopback_interface else None, - }, context="virtual_source_nat_vrfs", context_keys=["name"], From 0b982686b2c86a49c8ca2e3879617cbf87662ff8 Mon Sep 17 00:00:00 2001 From: Claus Holbech Date: Thu, 8 Aug 2024 14:40:28 +0200 Subject: [PATCH 14/24] Delete python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json --- .../schema/eos_cli_config_gen.jsonschema.json | 31965 ---------------- 1 file changed, 31965 deletions(-) delete mode 100644 python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json deleted file mode 100644 index b317495acb1..00000000000 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.jsonschema.json +++ /dev/null @@ -1,31965 +0,0 @@ -{ - "type": "object", - "properties": { - "aaa_accounting": { - "type": "object", - "properties": { - "exec": { - "type": "object", - "properties": { - "console": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Console" - }, - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exec" - }, - "system": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "System" - }, - "dot1x": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "commands": { - "type": "object", - "properties": { - "console": { - "type": "array", - "items": { - "type": "object", - "properties": { - "commands": { - "type": "string", - "description": "Privilege level 'all' or 0-15.", - "title": "Commands" - }, - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Console" - }, - "default": { - "type": "array", - "items": { - "type": "object", - "properties": { - "commands": { - "type": "string", - "description": "Privilege level 'all' or 0-15.", - "title": "Commands" - }, - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Accounting" - }, - "aaa_authentication": { - "type": "object", - "properties": { - "login": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Login authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - }, - "console": { - "type": "string", - "description": "Console authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Console" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Login" - }, - "enable": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Enable authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Enable" - }, - "dot1x": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "802.1x authentication method(s) as a string.\nExamples:\n- \"group radius\"\n- \"group MYGROUP group radius\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "policies": { - "type": "object", - "properties": { - "on_failure_log": { - "type": "boolean", - "title": "On Failure Log" - }, - "on_success_log": { - "type": "boolean", - "title": "On Success Log" - }, - "local": { - "type": "object", - "properties": { - "allow_nopassword": { - "type": "boolean", - "title": "Allow Nopassword" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local" - }, - "lockout": { - "type": "object", - "properties": { - "failure": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Failure" - }, - "duration": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Duration" - }, - "window": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Window" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lockout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Authentication" - }, - "aaa_authorization": { - "type": "object", - "properties": { - "policy": { - "type": "object", - "properties": { - "local_default_role": { - "type": "string", - "title": "Local Default Role" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy" - }, - "exec": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Exec authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exec" - }, - "config_commands": { - "type": "boolean", - "title": "Config Commands" - }, - "serial_console": { - "type": "boolean", - "title": "Serial Console" - }, - "dynamic": { - "type": "object", - "properties": { - "dot1x_additional_groups": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "dot1x Additional Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic" - }, - "commands": { - "type": "object", - "properties": { - "all_default": { - "type": "string", - "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\n", - "title": "All Default" - }, - "privilege": { - "type": "array", - "items": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Privilege level(s) 0-15.", - "title": "Level" - }, - "default": { - "type": "string", - "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Privilege" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Authorization" - }, - "aaa_root": { - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "sha512_password": { - "type": "string", - "title": "SHA512 Password" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Root" - }, - "aaa_server_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Group name.", - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "tacacs+", - "radius", - "ldap" - ], - "title": "Type" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "server": { - "type": "string", - "description": "Hostname or IP address.", - "title": "Server" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Servers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "AAA Server Groups" - }, - "access_lists": { - "type": "array", - "title": "IP Extended Access-Lists (legacy model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "permit_response_traffic": { - "type": "string", - "enum": [ - "nat" - ], - "description": "Permit response traffic automatically based on NAT translations.\nMinimum EOS version requirement 4.32.2F.", - "title": "Permit Response Traffic" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ip any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "address_locking": { - "type": "object", - "properties": { - "dhcp_servers_ipv4": { - "type": "array", - "items": { - "type": "string", - "description": "DHCP server IPv4 address." - }, - "title": "DHCP Servers IPv4" - }, - "disabled": { - "type": "boolean", - "description": "Disable IP locking on configured ports.", - "title": "Disabled" - }, - "leases": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "IP address.", - "title": "IP" - }, - "mac": { - "type": "string", - "description": "MAC address (hhhh.hhhh.hhhh or hh:hh:hh:hh:hh:hh).", - "title": "MAC" - } - }, - "required": [ - "ip", - "mac" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Leases" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "locked_address": { - "type": "object", - "properties": { - "expiration_mac_disabled": { - "type": "boolean", - "description": "Configure deauthorizing locked addresses upon MAC aging out.", - "title": "Expiration MAC Disabled" - }, - "ipv4_enforcement_disabled": { - "type": "boolean", - "description": "Configure enforcement for locked IPv4 addresses.", - "title": "IPv4 Enforcement Disabled" - }, - "ipv6_enforcement_disabled": { - "type": "boolean", - "description": "Configure enforcement for locked IPv6 addresses.", - "title": "IPv6 Enforcement Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Locked Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "agents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Agent name.", - "title": "Name" - }, - "environment_variables": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Environment variable name.", - "title": "Name" - }, - "value": { - "type": "string", - "description": "Environment variable value.", - "title": "Value" - } - }, - "required": [ - "value", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Environment Variables" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Agents" - }, - "aliases": { - "type": "string", - "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```\n", - "title": "Aliases" - }, - "application_traffic_recognition": { - "type": "object", - "description": "Application traffic recognition configuration.", - "properties": { - "categories": { - "type": "array", - "description": "List of categories.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Category name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Categories" - }, - "field_sets": { - "type": "object", - "properties": { - "l4_ports": { - "type": "array", - "description": "L4 port field-set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "L4 port field-set name.", - "title": "Name" - }, - "port_values": { - "type": "array", - "items": { - "type": "string", - "description": "Port values or range of port values.\nPort values are between 0 and 65535." - }, - "title": "Port Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Ports" - }, - "ipv4_prefixes": { - "type": "array", - "description": "IPv4 prefix field set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 prefix field-set name.", - "title": "Name" - }, - "prefix_values": { - "type": "array", - "items": { - "type": "string", - "description": "IP prefix (ex 1.2.3.0/24)." - }, - "title": "Prefix Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Field Sets" - }, - "applications": { - "type": "object", - "properties": { - "ipv4_applications": { - "type": "array", - "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "src_prefix_set_name": { - "type": "string", - "description": "Source prefix set name.", - "title": "Src Prefix Set Name" - }, - "dest_prefix_set_name": { - "type": "string", - "description": "Destination prefix set name.", - "title": "Dest Prefix Set Name" - }, - "dscp_ranges": { - "type": "array", - "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", - "items": { - "type": "string", - "description": "DSCP value or range syntax.", - "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" - }, - "title": "DSCP Ranges" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Applications" - }, - "l4_applications": { - "type": "array", - "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Applications" - }, - "application_profiles": { - "type": "array", - "description": "Group of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Profile name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications part of the application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - }, - "application_transports": { - "type": "array", - "description": "List of transport protocols.", - "items": { - "type": "string", - "description": "Transport name.", - "enum": [ - "http", - "https", - "udp", - "tcp", - "ip", - "ip6", - "ssl", - "rtp", - "sctp", - "quic" - ] - }, - "title": "Application Transports" - }, - "categories": { - "type": "array", - "description": "Categories under this application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of a category.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Categories" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Application Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Application Traffic Recognition" - }, - "arp": { - "type": "object", - "properties": { - "persistent": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Restore the ARP cache after reboot.", - "title": "Enabled" - }, - "refresh_delay": { - "type": "integer", - "description": "Time to wait in seconds before refreshing the ARP cache after reboot (EOS default 600).", - "minimum": 600, - "maximum": 3600, - "title": "Refresh Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Persistent" - }, - "aging": { - "type": "object", - "properties": { - "timeout_default": { - "description": "Timeout in seconds.", - "type": "integer", - "minimum": 60, - "maximum": 65535, - "title": "Timeout Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Aging" - }, - "static_entries": { - "type": "array", - "description": "Static ARP entries.", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "ARP entry IPv4 address.", - "title": "IPv4 Address" - }, - "vrf": { - "type": "string", - "description": "ARP entry VRF.", - "title": "VRF" - }, - "mac_address": { - "type": "string", - "description": "ARP entry MAC address.", - "pattern": "^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$", - "title": "MAC Address" - } - }, - "required": [ - "ipv4_address", - "mac_address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ARP" - }, - "as_path": { - "type": "object", - "properties": { - "regex_mode": { - "type": "string", - "enum": [ - "asn", - "string" - ], - "title": "Regex Mode" - }, - "access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access List Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "match": { - "type": "string", - "description": "Regex To Match.", - "title": "Match" - }, - "origin": { - "type": "string", - "enum": [ - "any", - "egp", - "igp", - "incomplete" - ], - "default": "any", - "title": "Origin" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Access Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "avd_data_conversion_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug", - "quiet" - ], - "default": "debug", - "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", - "title": "AVD Data Conversion Mode" - }, - "avd_data_validation_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug" - ], - "default": "warning", - "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", - "title": "AVD Data Validation Mode" - }, - "banners": { - "type": "object", - "properties": { - "login": { - "type": "string", - "description": "Multiline string ending with EOF on the last line.", - "title": "Login" - }, - "motd": { - "type": "string", - "description": "Multiline string ending with EOF on the last line.", - "title": "Motd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Banners" - }, - "bgp_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "neighbors": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Neighbors" - }, - "bgp_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Profile Name." - }, - "title": "BGP Maintenance Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "BGP Groups" - }, - "boot": { - "title": "System Boot Settings", - "description": "Set the Aboot password.\n", - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "default": "sha512", - "title": "Hash Algorithm" - }, - "key": { - "description": "Hashed Password.", - "type": "string", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "class_maps": { - "type": "object", - "title": "QOS Class-maps", - "properties": { - "pbr": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class-Map Name.", - "title": "Name" - }, - "ip": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "Standard Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "PBR" - }, - "qos": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class-Map Name.", - "title": "Name" - }, - "vlan": { - "type": "string", - "description": "VLAN value(s) or range(s) of VLAN values.", - "title": "VLAN" - }, - "cos": { - "type": "string", - "description": "CoS value(s) or range(s) of CoS values.", - "title": "COS" - }, - "ip": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "IPv4 Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP" - }, - "ipv6": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "IPv6 Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "clock": { - "type": "object", - "properties": { - "timezone": { - "type": "string", - "title": "Timezone" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Clock" - }, - "community_lists": { - "type": "array", - "title": "Community Lists (legacy model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit GSHUT 65123:123\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "config_comment": { - "type": "string", - "description": "Add a comment to provide information about the configuration.\nThis comment will be rendered at the top of the generated configuration.", - "title": "Config Comment" - }, - "custom_templates": { - "type": "array", - "title": "Extensibility with Custom Templates", - "description": "- Custom templates can be added below the playbook directory.\n- If a location above the directory is desired, a symbolic link can be used.\n- Example under the `playbooks` directory create symbolic link with the following command:\n\n ```bash\n ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n ```\n\n- The output will be rendered at the end of the configuration.\n- The order of custom templates in the list can be important if they overlap.\n- It is recommended to use a `!` delimiter at the top of each custom template.\n\nAdd `custom_templates` to group/host variables:\n", - "items": { - "type": "string", - "description": "Template relative path below playbook directory." - } - }, - "cvx": { - "type": "object", - "description": "CVX server features are not supported on physical switches. See `management_cvx` for client configurations.", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "peer_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or hostname." - }, - "title": "Peer Hosts" - }, - "services": { - "type": "object", - "properties": { - "mcs": { - "type": "object", - "properties": { - "redis": { - "type": "object", - "properties": { - "password": { - "type": "string", - "description": "Hashed password using the password_type.", - "title": "Password" - }, - "password_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Password Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redis" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MCS" - }, - "vxlan": { - "type": "object", - "description": "VXLAN Controller service.", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vtep_mac_learning": { - "type": "string", - "enum": [ - "control-plane", - "data-plane" - ], - "title": "Vtep MAC Learning" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CVX" - }, - "daemon_terminattr": { - "type": "object", - "description": "You can either provide a list of IPs/FQDNs to target on-premise Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming to multiple clusters both on-prem and cloud service is supported.\n\n!!! note\n For TerminAttr version recommendation and EOS compatibility matrix, please refer to the latest TerminAttr Release Notes\n which always contain the latest recommended versions and minimum required versions per EOS release.\n", - "properties": { - "cvaddrs": { - "type": "array", - "description": "Streaming address(es) for CloudVision single cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", - "items": { - "type": "string", - "description": "Server address in the format `:`." - }, - "title": "Cvaddrs" - }, - "clusters": { - "type": "array", - "description": "Multiple CloudVision clusters.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Cluster Name.", - "title": "Name" - }, - "cvaddrs": { - "type": "array", - "description": "Streaming address(es) for CloudVision cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", - "items": { - "type": "string", - "description": "Server address in the format `:`." - }, - "title": "Cvaddrs" - }, - "cvauth": { - "type": "object", - "description": "Authentication scheme used to connect to CloudVision.\n", - "properties": { - "method": { - "type": "string", - "enum": [ - "token", - "token-secure", - "key", - "certs" - ], - "title": "Method" - }, - "key": { - "type": "string", - "title": "Key" - }, - "token_file": { - "type": "string", - "description": "Token file path.\ne.g. \"/tmp/token\"\n", - "title": "Token File" - }, - "cert_file": { - "type": "string", - "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", - "title": "Cert File" - }, - "ca_file": { - "type": "string", - "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", - "title": "Ca File" - }, - "key_file": { - "type": "string", - "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", - "title": "Key File" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cvauth" - }, - "cvobscurekeyfile": { - "type": "boolean", - "description": "Encrypt the private key used for authentication to CloudVision.\n", - "title": "Cvobscurekeyfile" - }, - "cvproxy": { - "type": "string", - "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", - "title": "Cvproxy" - }, - "cvsourceip": { - "type": "string", - "description": "Set source IP address in case of in-band management.\n", - "title": "Cvsourceip" - }, - "cvsourceintf": { - "type": "string", - "description": "Set source interface in case of in-band management. Available as of TerminAttr v1.23.0.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", - "title": "Cvsourceintf" - }, - "cvvrf": { - "type": "string", - "description": "The VRF to use to connect to CloudVision.\n", - "title": "Cvvrf" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Clusters" - }, - "cvauth": { - "type": "object", - "description": "Authentication scheme used to connect to CloudVision.\n", - "properties": { - "method": { - "type": "string", - "enum": [ - "token", - "token-secure", - "key", - "certs" - ], - "title": "Method" - }, - "key": { - "type": "string", - "title": "Key" - }, - "token_file": { - "type": "string", - "description": "Token file path.\ne.g. \"/tmp/token\"\n", - "title": "Token File" - }, - "cert_file": { - "type": "string", - "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", - "title": "Cert File" - }, - "ca_file": { - "type": "string", - "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", - "title": "Ca File" - }, - "key_file": { - "type": "string", - "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", - "title": "Key File" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cvauth" - }, - "cvobscurekeyfile": { - "type": "boolean", - "description": "Encrypt the private key used for authentication to CloudVision.\n", - "title": "Cvobscurekeyfile" - }, - "cvproxy": { - "type": "string", - "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", - "title": "Cvproxy" - }, - "cvsourceip": { - "type": "string", - "description": "Set source IP address in case of in-band management.\n", - "title": "Cvsourceip" - }, - "cvsourceintf": { - "type": "string", - "description": "Set source interface in case of in-band management.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", - "title": "Cvsourceintf" - }, - "cvvrf": { - "type": "string", - "description": "The VRF to use to connect to CloudVision.\n", - "title": "Cvvrf" - }, - "cvgnmi": { - "type": "boolean", - "description": "Stream states from EOS gNMI servers (Openconfig) to CloudVision. Available as of TerminAttr v1.13.1.\n", - "title": "Cvgnmi" - }, - "disable_aaa": { - "type": "boolean", - "description": "Disable AAA authorization and accounting.\nWhen setting this flag, all commands pushed from CloudVision are applied directly to the CLI without authorization.\n", - "title": "Disable AAA" - }, - "grpcaddr": { - "type": "string", - "description": "Set the gRPC server address, the default is 127.0.0.1:6042.\ne.g. \"MGMT/0.0.0.0:6042\"\n", - "title": "Grpcaddr" - }, - "grpcreadonly": { - "type": "boolean", - "description": "gNMI read-only mode - Disable gnmi.Set().\n", - "title": "Grpcreadonly" - }, - "ingestexclude": { - "type": "string", - "description": "Exclude paths from Sysdb on the ingest side.\ne.g. \"/Sysdb/cell/1/agent,/Sysdb/cell/2/agent\"\n", - "title": "Ingestexclude" - }, - "smashexcludes": { - "type": "string", - "description": "Exclude paths from the shared memory table.\ne.g. \"ale,flexCounter,hardware,kni,pulse,strata\"\n", - "title": "Smashexcludes" - }, - "taillogs": { - "type": "string", - "description": "Enable log file collection; /var/log/messages is streamed by default if no path is set.\ne.g. \"/var/log/messages\"\n", - "title": "Taillogs" - }, - "ecodhcpaddr": { - "type": "string", - "description": "ECO DHCP Collector address or ECO DHCP Fingerprint listening address in standalone mode (default \"127.0.0.1:67\").\n", - "title": "Ecodhcpaddr" - }, - "ipfix": { - "type": "boolean", - "description": "Enable IPFIX provider (TerminAttr default is true).\nThis flag is enabled by default and does not have to be added to the daemon configuration.\n", - "title": "Ipfix" - }, - "ipfixaddr": { - "type": "string", - "description": "ECO IPFIX Collector address to listen on to receive IPFIX packets (TerminAttr default \"127.0.0.1:4739\").\n", - "title": "Ipfixaddr" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow provider (TerminAttr default is true).\n", - "title": "Sflow" - }, - "sflowaddr": { - "type": "string", - "description": "ECO sFlow Collector address to listen on to receive sFlow packets (TerminAttr default \"127.0.0.1:6343\").\n", - "title": "Sflowaddr" - }, - "cvconfig": { - "type": "boolean", - "description": "Subscribe to dynamic device configuration from CloudVision (TerminAttr default is false).\n", - "title": "Cvconfig" - }, - "cvcompression": { - "type": "string", - "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\n\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", - "deprecated": true, - "title": "Cvcompression" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Daemon TerminAttr" - }, - "daemons": { - "type": "array", - "title": "Custom Daemons", - "description": "This will add a daemon to the eos configuration that is most useful when trying to run OpenConfig clients like ocprometheus.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Daemon Name.", - "title": "Name" - }, - "exec": { - "type": "string", - "description": "command to run as a daemon.\n", - "title": "Exec" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "required": [ - "exec", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "dhcp_relay": { - "type": "object", - "properties": { - "servers": { - "type": "array", - "items": { - "type": "string", - "description": "Server IP or Hostname." - }, - "title": "Servers" - }, - "tunnel_requests_disabled": { - "type": "boolean", - "title": "Tunnel Requests Disabled" - }, - "mlag_peerlink_requests_disabled": { - "type": "boolean", - "title": "MLAG Peerlink Requests Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "DHCP Relay" - }, - "dhcp_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "vrf": { - "type": "string", - "description": "VRF in which to configure the DHCP server, use `default` to indicate default VRF.", - "title": "VRF" - }, - "lease_time_ipv4": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time IPv4" - }, - "lease_time_ipv6": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time IPv6" - }, - "dns_domain_name_ipv4": { - "type": "string", - "title": "DNS Domain Name IPv4" - }, - "dns_domain_name_ipv6": { - "type": "string", - "title": "DNS Domain Name IPv6" - }, - "dns_servers_ipv4": { - "type": "array", - "minItems": 1, - "description": "List of DNS servers for IPv4 clients.", - "items": { - "type": "string", - "description": "IPv4 address of DNS server." - }, - "title": "DNS Servers IPv4" - }, - "dns_servers_ipv6": { - "type": "array", - "minItems": 1, - "description": "List of DNS servers for IPv6 clients.", - "items": { - "type": "string", - "description": "IPv6 address of DNS server." - }, - "title": "DNS Servers IPv6" - }, - "tftp_server": { - "type": "object", - "properties": { - "file_ipv4": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "description": "Name of TFTP file for IPv4 clients.", - "title": "File IPv4" - }, - "file_ipv6": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "description": "Name of TFTP file for IPv6 clients.", - "title": "File IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tftp Server" - }, - "ipv4_vendor_options": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vendor_id": { - "type": "string", - "title": "Vendor ID" - }, - "sub_options": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "title": "Code" - }, - "string": { - "type": "string", - "description": "String value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "title": "String" - }, - "ipv4_address": { - "type": "string", - "description": "IPv4 address value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "title": "IPv4 Address" - }, - "array_ipv4_address": { - "type": "array", - "description": "Array of IPv4 addresses for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "items": { - "type": "string" - }, - "title": "Array IPv4 Address" - } - }, - "required": [ - "code" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sub Options" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "vendor_id" - ] - }, - "title": "IPv4 Vendor Options" - }, - "subnets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "subnet": { - "description": "IPv4/IPv6 subnet.", - "type": "string", - "title": "Subnet" - }, - "name": { - "type": "string", - "title": "Name" - }, - "default_gateway": { - "type": "string", - "title": "Default Gateway" - }, - "dns_servers": { - "type": "array", - "items": { - "type": "string" - }, - "title": "DNS Servers" - }, - "ranges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "start": { - "type": "string", - "title": "Start" - }, - "end": { - "type": "string", - "title": "End" - } - }, - "required": [ - "start", - "end" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Ranges" - }, - "lease_time": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time" - }, - "reservations": { - "description": "DHCP client reservations.", - "type": "array", - "items": { - "type": "object", - "properties": { - "mac_address": { - "type": "string", - "description": "Ethernet address in format - HHHH.HHHH.HHHH", - "title": "MAC Address" - }, - "hostname": { - "type": "string", - "title": "Hostname" - }, - "ipv4_address": { - "type": "string", - "description": "Valid IPv4 address from the given subnet.\nThis should only be used within an IPv4 subnet.", - "title": "IPv4 Address" - }, - "ipv6_address": { - "type": "string", - "description": "Valid IPv6 address from the given subnet.\nThis should only be used within an IPv6 subnet.", - "title": "IPv6 Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "mac_address" - ] - }, - "title": "Reservations" - } - }, - "required": [ - "subnet" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Subnets" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the dhcp server in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "vrf" - ] - }, - "title": "DHCP Servers" - }, - "dns_domain": { - "type": "string", - "description": "Domain Name.", - "title": "DNS Domain" - }, - "domain_list": { - "type": "array", - "description": "Search list of DNS domains.", - "items": { - "type": "string", - "description": "Domain name." - }, - "title": "Domain List" - }, - "dot1x": { - "type": "object", - "title": "Global 802.1x Authentication", - "properties": { - "system_auth_control": { - "type": "boolean", - "title": "System Auth Control" - }, - "protocol_lldp_bypass": { - "type": "boolean", - "title": "Protocol LLDP Bypass" - }, - "protocol_bpdu_bypass": { - "type": "boolean", - "title": "Protocol Bpdu Bypass" - }, - "dynamic_authorization": { - "type": "boolean", - "title": "Dynamic Authorization" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "delay": { - "type": "integer", - "minimum": 0, - "maximum": 300, - "title": "Delay" - }, - "hold_period": { - "type": "integer", - "minimum": 1, - "maximum": 300, - "title": "Hold Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "radius_av_pair": { - "type": "object", - "properties": { - "service_type": { - "type": "boolean", - "title": "Service Type" - }, - "framed_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 9236, - "title": "Framed MTU" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Radius Av Pair" - }, - "aaa": { - "type": "object", - "description": "Configure AAA parameters.", - "properties": { - "unresponsive": { - "type": "object", - "description": "Configure AAA timeout options.", - "properties": { - "eap_response": { - "type": "string", - "description": "EAP response to send.", - "enum": [ - "success", - "disabled" - ], - "title": "Eap Response" - }, - "action": { - "type": "object", - "description": "Set action for supplicant when AAA times out.", - "properties": { - "apply_cached_results": { - "type": "boolean", - "description": "Use results from a previous AAA response.", - "title": "Apply Cached Results" - }, - "cached_results_timeout": { - "type": "object", - "properties": { - "time_duration": { - "type": "integer", - "minimum": 1, - "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", - "title": "Time Duration" - }, - "time_duration_unit": { - "type": "string", - "enum": [ - "days", - "hours", - "minutes", - "seconds" - ], - "title": "Time Duration Unit" - } - }, - "required": [ - "time_duration_unit" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cached Results Timeout" - }, - "apply_alternate": { - "type": "boolean", - "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive action apply cached-results else traffic allow", - "title": "Apply Alternate" - }, - "traffic_allow": { - "type": "boolean", - "description": "Set action for supplicant traffic when AAA times out.", - "title": "Traffic Allow" - }, - "traffic_allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Traffic Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Action" - }, - "phone_action": { - "type": "object", - "description": "Set action for supplicant when AAA times out.", - "properties": { - "apply_cached_results": { - "type": "boolean", - "description": "Use results from a previous AAA response.", - "title": "Apply Cached Results" - }, - "cached_results_timeout": { - "type": "object", - "properties": { - "time_duration": { - "type": "integer", - "minimum": 1, - "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", - "title": "Time Duration" - }, - "time_duration_unit": { - "type": "string", - "enum": [ - "days", - "hours", - "minutes", - "seconds" - ], - "title": "Time Duration Unit" - } - }, - "required": [ - "time_duration_unit" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cached Results Timeout" - }, - "apply_alternate": { - "type": "boolean", - "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive phone action apply cached-results else traffic allow", - "title": "Apply Alternate" - }, - "traffic_allow": { - "description": "Set action for supplicant traffic when AAA times out.", - "type": "boolean", - "title": "Traffic Allow" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone Action" - }, - "recovery_action_reauthenticate": { - "type": "boolean", - "title": "Recovery Action Reauthenticate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unresponsive" - }, - "accounting_update_interval": { - "type": "integer", - "minimum": 5, - "maximum": 65535, - "description": "Interval period in seconds.", - "title": "Accounting Update Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA" - }, - "captive_portal": { - "type": "object", - "description": "Web authentication feature authenticates a supplicant through a web page, referred to as a captive portal.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "url": { - "type": "string", - "description": "Supported URL type:\n - http: http://[:]\n - https: https://[:]", - "title": "URL" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - }, - "start_limit_infinite": { - "type": "boolean", - "description": "Set captive-portal start limit to infinte.", - "title": "Start Limit Infinite" - }, - "access_list_ipv4": { - "type": "string", - "description": "Standard access-list name.", - "title": "Access List IPv4" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Captive Portal" - }, - "supplicant": { - "type": "object", - "properties": { - "profiles": { - "description": "Dot1x supplicant profiles.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "eap_method": { - "type": "string", - "description": "Extensible Authentication Protocol method:\n - EAP Flexible Authentication via Secure Tunneling.\n - EAP with Transport Layer Security.", - "enum": [ - "fast", - "tls" - ], - "title": "Eap Method" - }, - "identity": { - "type": "string", - "description": "User identity.", - "title": "Identity" - }, - "passphrase_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Passphrase Type" - }, - "passphrase": { - "type": "string", - "description": "Extensible Authentication Protocol password.", - "title": "Passphrase" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "logging": { - "type": "boolean", - "description": "Enable supplicant logging.", - "title": "Logging" - }, - "disconnect_cached_results_timeout": { - "type": "integer", - "minimum": 60, - "maximum": 65535, - "description": "Timeout in seconds for removing a disconnected supplicant.", - "title": "Disconnect Cached Results Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Supplicant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "dps_interfaces": { - "type": "array", - "minItems": 1, - "maxItems": 1, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "\"Dps1\" is currently the only supported interface.", - "enum": [ - "Dps1" - ], - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "mtu": { - "type": "integer", - "description": "Maximum Transmission Unit in bytes.", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name,", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment Size for IPv4.", - "minimum": 64, - "maximum": 65495, - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment Size for IPv6.", - "minimum": 64, - "maximum": 65475, - "title": "IPv6" - }, - "direction": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Dps interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "DPS Interfaces" - }, - "dynamic_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Dynamic prefix-list name.", - "title": "Name" - }, - "match_map": { - "type": "string", - "description": "Route-map name.", - "title": "Match Map" - }, - "prefix_list": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "description": "Prefix-list name.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Prefix-list name.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic Prefix Lists" - }, - "enable_password": { - "type": "object", - "properties": { - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.\n", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Enable Password" - }, - "eos_cli": { - "type": "string", - "description": "Multiline string with EOS CLI rendered directly on the root level of the final EOS configuration.", - "title": "EOS CLI" - }, - "eos_cli_config_gen_configuration": { - "type": "object", - "properties": { - "hide_passwords": { - "type": "boolean", - "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the configuration if true.\n", - "default": false, - "title": "Hide Passwords" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EOS CLI Config Gen Configuration" - }, - "eos_cli_config_gen_documentation": { - "type": "object", - "properties": { - "hide_passwords": { - "type": "boolean", - "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the documentation if true.\n", - "default": true, - "title": "Hide Passwords" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EOS CLI Config Gen Documentation" - }, - "errdisable": { - "type": "object", - "properties": { - "detect": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "acl", - "arp-inspection", - "dot1x", - "link-change", - "tapagg", - "xcvr-misconfigured", - "xcvr-overheat", - "xcvr-power-unsupported" - ] - }, - "title": "Causes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Detect" - }, - "recovery": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "arp-inspection", - "bpduguard", - "dot1x", - "hitless-reload-down", - "lacp-rate-limit", - "link-flap", - "no-internal-vlan", - "portchannelguard", - "portsec", - "speed-misconfigured", - "tap-port-init", - "tapagg", - "uplink-failure-detection", - "xcvr-misconfigured", - "xcvr-overheat", - "xcvr-power-unsupported", - "xcvr-unsupported" - ] - }, - "title": "Causes" - }, - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "default": 300, - "minimum": 30, - "maximum": 86400, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Recovery" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Errdisable" - }, - "ethernet_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "load_interval": { - "type": "integer", - "minimum": 0, - "maximum": 600, - "description": "Interval in seconds for updating interface counters.", - "title": "Load Interval" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "native_vlan": { - "type": "integer", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "tagged phone", - "untagged", - "untagged phone" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q", - "port-channel-member" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "address_locking": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Enable address locking for IPv4.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Enable address locking for IPv6.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "desired", - "on", - "off" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "error_correction_encoding": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "fire_code": { - "type": "boolean", - "title": "Fire Code" - }, - "reed_solomon": { - "type": "boolean", - "title": "Reed Solomon" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Error Correction Encoding" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulations are all optional and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask or \"dhcp\".", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string" - }, - "title": "IP Address Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "dhcp_client_accept_default_route": { - "type": "boolean", - "description": "Install default-route obtained via DHCP.", - "title": "DHCP Client Accept Default Route" - }, - "dhcp_server_ipv4": { - "type": "boolean", - "description": "Enable IPv4 DHCP server.", - "title": "DHCP Server IPv4" - }, - "dhcp_server_ipv6": { - "type": "boolean", - "description": "Enable IPv6 DHCP server.", - "title": "DHCP Server IPv6" - }, - "ip_helpers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_nat": { - "type": "object", - "properties": { - "service_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Service Profile" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "multicast": { - "type": "object", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "mac_security": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Security" - }, - "tcp_mss_ceiling": { - "type": "object", - "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", - "properties": { - "ipv4_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv4 Segment Size" - }, - "ipv6_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv6 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "channel_group": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "mode": { - "type": "string", - "enum": [ - "on", - "active", - "passive" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Channel Group" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "poe": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "profile": { - "type": "string", - "description": "Interface profile.", - "title": "Profile" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "congestion_drops": { - "type": "boolean", - "title": "Congestion Drops" - }, - "spanning_tree": { - "type": "boolean", - "title": "Spanning Tree" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "dot1x": { - "type": "object", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Value can be 60-4294967295 or 'server'.", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - }, - "eapol": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "authentication_failure_fallback_mba": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure Fallback Mba" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Eapol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "priority_flow_control": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "priorities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "title": "No Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "priority" - ] - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "lacp_timer": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "fast", - "normal" - ], - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 3000, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "lacp_port_priority": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "LACP Port Priority" - }, - "transceiver": { - "type": "object", - "properties": { - "frequency": { - "type": "string", - "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", - "title": "Frequency" - }, - "frequency_unit": { - "type": "string", - "enum": [ - "ghz" - ], - "description": "Unit of Transceiver Laser Frequency.", - "title": "Frequency Unit" - }, - "media": { - "type": "object", - "properties": { - "override": { - "type": "string", - "description": "Transceiver type.", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Media" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transceiver" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "sync_e": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "priority": { - "type": "string", - "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "port_profile": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Port Profile" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Uc TX Queues" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "max", - "max_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "TX Queues" - }, - "vrrp_ids": { - "type": "array", - "description": "VRRP model.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "switchport": { - "type": "object", - "properties": { - "port_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "mac_address_maximum": { - "type": "object", - "description": "Maximum number of MAC addresses allowed on the interface.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable port level check for port security (only in violation 'shutdown' mode).", - "title": "Disabled" - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "MAC address limit.", - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Maximum" - }, - "violation": { - "type": "object", - "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "shutdown", - "protect" - ], - "description": "Configure port security mode.", - "title": "Mode" - }, - "protect_log": { - "type": "boolean", - "description": "Log new addresses seen after limit is reached in protect mode.", - "title": "Protect Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Violation" - }, - "vlan_default_mac_address_maximum": { - "type": "integer", - "minimum": 0, - "maximum": 1000, - "description": "Default maximum MAC addresses for all VLANs on this interface.", - "title": "VLAN Default MAC Address Maximum" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", - "title": "Range" - }, - "mac_address_maximum": { - "type": "integer", - "title": "MAC Address Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "range" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Security" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ethernet Interfaces" - }, - "event_handlers": { - "type": "array", - "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Event Handler Name.", - "title": "Name" - }, - "action_type": { - "type": "string", - "enum": [ - "bash", - "increment", - "log" - ], - "title": "Action Type" - }, - "action": { - "type": "string", - "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", - "deprecated": true, - "title": "Action" - }, - "actions": { - "type": "object", - "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", - "properties": { - "bash_command": { - "type": "string", - "description": "Define BASH command action. Command could be multiline also.", - "title": "Bash Command" - }, - "log": { - "type": "boolean", - "description": "Log a message when the event is triggered.", - "title": "Log" - }, - "increment_device_health_metric": { - "type": "string", - "description": "Name of device-health metric.", - "title": "Increment Device Health Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Actions" - }, - "delay": { - "type": "integer", - "description": "Event-handler delay in seconds.\n", - "title": "Delay" - }, - "trigger": { - "type": "string", - "description": "Configure event trigger condition.\n", - "enum": [ - "on-boot", - "on-counters", - "on-intf", - "on-logging", - "on-maintenance", - "on-startup-config", - "vm-tracer vm" - ], - "title": "Trigger" - }, - "trigger_on_counters": { - "type": "object", - "properties": { - "condition": { - "type": "string", - "description": "Set the logical expression to evaluate.", - "title": "Condition" - }, - "granularity_per_source": { - "type": "boolean", - "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", - "title": "Granularity Per Source" - }, - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Counters" - }, - "trigger_on_logging": { - "type": "object", - "properties": { - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages.", - "title": "Regex" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Logging" - }, - "trigger_on_intf": { - "type": "object", - "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", - "properties": { - "interface": { - "type": "string", - "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", - "title": "Interface" - }, - "ip": { - "type": "boolean", - "description": "Action is triggered upon changes to interface IP address assignment.", - "title": "IP" - }, - "ipv6": { - "type": "boolean", - "description": "Action is triggered upon changes to interface ipv6 address assignment.", - "title": "IPv6" - }, - "operstatus": { - "type": "boolean", - "description": "Action is triggered upon changes to interface operStatus.", - "title": "Operstatus" - } - }, - "required": [ - "interface" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Intf" - }, - "trigger_on_maintenance": { - "description": "Settings required for trigger 'on-maintenance'.", - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "enter", - "exit" - ], - "title": "Operation" - }, - "bgp_peer": { - "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", - "type": "string", - "title": "BGP Peer" - }, - "action": { - "type": "string", - "description": "Action for maintenance operation.", - "enum": [ - "after", - "before", - "all", - "begin", - "end" - ], - "title": "Action" - }, - "stage": { - "type": "string", - "description": "Action is triggered after/before specified stage.", - "enum": [ - "bgp", - "linkdown", - "mlag", - "ratemon" - ], - "title": "Stage" - }, - "vrf": { - "type": "string", - "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", - "title": "VRF" - }, - "interface": { - "type": "string", - "description": "Trigger condition occurs on maintenance operation of specified interface.", - "title": "Interface" - }, - "unit": { - "type": "string", - "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", - "title": "Unit" - } - }, - "required": [ - "operation", - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Maintenance" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", - "deprecated": true, - "title": "Regex" - }, - "asynchronous": { - "type": "boolean", - "default": false, - "description": "Set the action to be non-blocking.\n", - "title": "Asynchronous" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Event Handlers" - }, - "event_monitor": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event Monitor" - }, - "flow_tracking": { - "type": "object", - "properties": { - "sampled": { - "type": "object", - "properties": { - "encapsulation": { - "type": "object", - "properties": { - "ipv4_ipv6": { - "type": "boolean", - "title": "IPv4 IPv6" - }, - "mpls": { - "type": "boolean", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation" - }, - "sample": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Sample" - }, - "hardware_offload": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Configure hardware offload for IPv4 traffic.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Configure hardware offload for IPv6 traffic.", - "title": "IPv6" - }, - "threshold_minimum": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "description": "Minimum number of samples.", - "title": "Threshold Minimum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Offload" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "table_size": { - "type": "integer", - "minimum": 1, - "maximum": 614400, - "description": "Maximum number of entries in flow table.\n", - "title": "Table Size" - }, - "record_export": { - "type": "object", - "properties": { - "mpls": { - "type": "boolean", - "description": "Export MPLS forwarding information.", - "title": "MPLS" - }, - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sampled" - }, - "hardware": { - "type": "object", - "properties": { - "record": { - "type": "object", - "properties": { - "format_ipfix_standard_timestamps_counters": { - "type": "boolean", - "description": "Enable software export of IPFIX data records.", - "title": "Format Ipfix Standard Timestamps Counters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "record_export": { - "type": "object", - "properties": { - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "flow_trackings": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "sampled" - ], - "description": "Flow Tracking Type - only 'sampled' supported for now.", - "title": "Type" - }, - "sample": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Sample" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "record_export": { - "type": "object", - "properties": { - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - }, - "mpls": { - "type": "boolean", - "description": "Export MPLS forwarding information.", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - }, - "table_size": { - "type": "integer", - "minimum": 1, - "maximum": 614400, - "description": "Maximum number of entries in flow table.\n", - "title": "Table Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "type" - ] - }, - "title": "Flow Trackings" - }, - "generate_default_config": { - "type": "boolean", - "default": true, - "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter\n", - "title": "Generate Default Config" - }, - "generate_device_documentation": { - "type": "boolean", - "default": true, - "title": "Generate Device Documentation" - }, - "hardware": { - "type": "object", - "properties": { - "access_list": { - "type": "object", - "properties": { - "mechanism": { - "type": "string", - "enum": [ - "algomatch", - "none", - "tcam" - ], - "title": "Mechanism" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List" - }, - "speed_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "speed_group": { - "type": "string", - "title": "Speed Group" - }, - "serdes": { - "type": "string", - "description": "Serdes speed like \"10g\" or \"25g\".", - "title": "Serdes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "speed_group" - ] - }, - "title": "Speed Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware" - }, - "hardware_counters": { - "type": "object", - "properties": { - "features": { - "type": "array", - "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "acl", - "decap-group", - "directflow", - "ecn", - "flow-spec", - "gre tunnel interface", - "ip", - "mpls interface", - "mpls lfib", - "mpls tunnel", - "multicast", - "nexthop", - "pbr", - "pdp", - "policing interface", - "qos", - "qos dual-rate-policer", - "route", - "routed-port", - "segment-security", - "subinterface", - "tapagg", - "traffic-class", - "traffic-policy", - "vlan", - "vlan-interface", - "vni decap", - "vni encap", - "vtep decap", - "vtep encap" - ], - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "cpu" - ], - "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", - "title": "Direction" - }, - "address_type": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "mac" - ], - "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", - "title": "Address Type" - }, - "layer3": { - "type": "boolean", - "description": "Supported only for the 'ip' feature.\n", - "title": "Layer3" - }, - "vrf": { - "type": "string", - "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "VRF" - }, - "prefix": { - "type": "string", - "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "Prefix" - }, - "units_packets": { - "type": "boolean", - "title": "Units Packets" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Features" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Counters" - }, - "hostname": { - "type": "string", - "title": "Hostname" - }, - "interface_defaults": { - "type": "object", - "properties": { - "ethernet": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet" - }, - "mtu": { - "type": "integer", - "title": "MTU" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface Defaults" - }, - "interface_groups": { - "type": "array", - "title": "Maintenance Interface Groups", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface-Group name.", - "title": "Name" - }, - "interfaces": { - "type": "array", - "items": { - "type": "string", - "description": "Interface Name." - }, - "title": "Interfaces" - }, - "bgp_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Name of BGP Maintenance Profile." - }, - "title": "BGP Maintenance Profiles" - }, - "interface_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Name of Interface Maintenance Profile." - }, - "title": "Interface Maintenance Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - } - }, - "interface_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface-Profile Name.", - "title": "Name" - }, - "commands": { - "type": "array", - "items": { - "type": "string", - "description": "EOS CLI interface command.\nExample: \"switchport mode access\"\n" - }, - "title": "Commands" - } - }, - "required": [ - "commands", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Profiles" - }, - "ip_access_lists": { - "type": "array", - "title": "IP Extended Access-Lists (improved model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "entries": { - "type": "array", - "description": "ACL Entries.", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "ACL entry sequence number.", - "title": "Sequence" - }, - "remark": { - "type": "string", - "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", - "title": "Remark" - }, - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "description": "ACL action.\nRequired except for remarks.", - "title": "Action" - }, - "protocol": { - "type": "string", - "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", - "title": "Protocol" - }, - "source": { - "type": "string", - "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Source" - }, - "source_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Source Ports Match" - }, - "source_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP source port name or number." - }, - "title": "Source Ports" - }, - "destination": { - "type": "string", - "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Destination" - }, - "destination_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Destination Ports Match" - }, - "destination_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP destination port name or number." - }, - "title": "Destination Ports" - }, - "tcp_flags": { - "type": "array", - "items": { - "type": "string", - "description": "TCP Flag Name." - }, - "title": "TCP Flags" - }, - "fragments": { - "type": "boolean", - "description": "Match non-head fragment packets.", - "title": "Fragments" - }, - "log": { - "type": "boolean", - "description": "Log matches against this rule.", - "title": "Log" - }, - "ttl": { - "type": "integer", - "description": "TTL value.", - "minimum": 0, - "maximum": 255, - "title": "TTL" - }, - "ttl_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq" - ], - "default": "eq", - "title": "TTL Match" - }, - "icmp_type": { - "type": "string", - "description": "Message type name/number for ICMP packets.", - "title": "ICMP Type" - }, - "icmp_code": { - "type": "string", - "description": "Message code for ICMP packets.", - "title": "ICMP Code" - }, - "nexthop_group": { - "type": "string", - "description": "nexthop-group name.", - "title": "Nexthop Group" - }, - "tracked": { - "type": "boolean", - "description": "Match packets in existing ICMP/UDP/TCP connections.", - "title": "Tracked" - }, - "dscp": { - "type": "string", - "description": "DSCP value or name.", - "title": "DSCP" - }, - "vlan_number": { - "type": "integer", - "title": "VLAN Number" - }, - "vlan_inner": { - "type": "boolean", - "default": false, - "title": "VLAN Inner" - }, - "vlan_mask": { - "type": "string", - "description": "0x000-0xFFF VLAN mask.", - "title": "VLAN Mask" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - } - }, - "ip_access_lists_max_entries": { - "type": "integer", - "description": "Limit ACL entries defined under the `ip_access_lists`.", - "title": "IP Access Lists Max Entries" - }, - "ip_community_lists": { - "type": "array", - "title": "IP Community Lists", - "description": "Communities and regexp entries MUST not be configured in the same community-list.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IP Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Action" - }, - "communities": { - "type": "array", - "items": { - "type": "string" - }, - "description": "If defined, a standard community-list will be configured.\nSupported community strings (case insensitive):\n- GSHUT\n- internet\n- local-as\n- no-advertise\n- no-export\n- <1-4294967040>\n- aa:nn\n", - "title": "Communities" - }, - "regexp": { - "type": "string", - "description": "Regular Expression.\nIf defined, a regex community-list will be configured.\n", - "title": "RegExp" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_dhcp_relay": { - "type": "object", - "properties": { - "always_on": { - "type": "boolean", - "description": "DhcpRelay Agent will be in always-on mode.", - "title": "Always On" - }, - "all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "All Subnets" - }, - "information_option": { - "type": "boolean", - "description": "Insert Option-82 information.", - "title": "Information Option" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP DHCP Relay" - }, - "ip_dhcp_snooping": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "bridging": { - "type": "boolean", - "title": "Bridging" - }, - "information_option": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable insertion of option-82 in DHCP request packets.", - "title": "Enabled" - }, - "circuit_id_type": { - "type": "string", - "description": "\"none\" or <0 - 255>.", - "title": "Circuit ID Type" - }, - "circuit_id_format": { - "type": "string", - "description": "Required if `circuit_id_type` is set.\n- \"%h:%p\" Hostname and interface name\n- \"%p:%v\" Interface name and VLAN ID", - "enum": [ - "%h:%p", - "%p:%v" - ], - "title": "Circuit ID Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Information Option" - }, - "vlan": { - "type": "string", - "description": "VLAN range as string.\n\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18", - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP DHCP Snooping" - }, - "ip_domain_lookup": { - "type": "object", - "properties": { - "source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Source Interface.\n", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Source Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Domain Lookup" - }, - "ip_extcommunity_lists": { - "type": "array", - "title": "IP Extended Community Lists", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "extcommunities": { - "type": "string", - "description": "Communities as string.\nExample: \"65000:65000\"\n", - "title": "Extcommunities" - } - }, - "required": [ - "type", - "extcommunities" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_extcommunity_lists_regexp": { - "type": "array", - "title": "IP Extended Community Lists RegExp", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "regexp": { - "type": "string", - "description": "Regular Expression.", - "title": "RegExp" - } - }, - "required": [ - "type", - "regexp" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_ftp_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Ftp Client Source Interfaces" - }, - "ip_hardware": { - "type": "object", - "properties": { - "fib": { - "type": "object", - "properties": { - "optimize": { - "type": "object", - "properties": { - "prefixes": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "enum": [ - "internet", - "urpf-internet" - ], - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Optimize" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fib" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Hardware" - }, - "ip_http_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Interface Name.", - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP HTTP Client Source Interfaces" - }, - "ip_icmp_redirect": { - "type": "boolean", - "title": "IP ICMP Redirect" - }, - "ip_igmp_snooping": { - "type": "object", - "properties": { - "globally_enabled": { - "type": "boolean", - "default": true, - "description": "Activate or deactivate IGMP snooping for all vlans where `vlans` allows user to activate / deactivate IGMP snooping per vlan.", - "title": "Globally Enabled" - }, - "robustness_variable": { - "type": "integer", - "title": "Robustness Variable" - }, - "restart_query_interval": { - "type": "integer", - "title": "Restart Query Interval" - }, - "interface_restart_query": { - "type": "integer", - "title": "Interface Restart Query" - }, - "fast_leave": { - "type": "boolean", - "title": "Fast Leave" - }, - "querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "address": { - "type": "string", - "description": "IP Address.", - "title": "Address" - }, - "query_interval": { - "type": "integer", - "title": "Query Interval" - }, - "max_response_time": { - "type": "integer", - "title": "Max Response Time" - }, - "last_member_query_interval": { - "type": "integer", - "title": "Last Member Query Interval" - }, - "last_member_query_count": { - "type": "integer", - "title": "Last Member Query Count" - }, - "startup_query_interval": { - "type": "integer", - "title": "Startup Query Interval" - }, - "startup_query_count": { - "type": "integer", - "title": "Startup Query Count" - }, - "version": { - "type": "integer", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Querier" - }, - "proxy": { - "type": "boolean", - "title": "Proxy" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "address": { - "type": "string", - "description": "IP Address.", - "title": "Address" - }, - "query_interval": { - "type": "integer", - "title": "Query Interval" - }, - "max_response_time": { - "type": "integer", - "title": "Max Response Time" - }, - "last_member_query_interval": { - "type": "integer", - "title": "Last Member Query Interval" - }, - "last_member_query_count": { - "type": "integer", - "title": "Last Member Query Count" - }, - "startup_query_interval": { - "type": "integer", - "title": "Startup Query Interval" - }, - "startup_query_count": { - "type": "integer", - "title": "Startup Query Count" - }, - "version": { - "type": "integer", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Querier" - }, - "max_groups": { - "type": "integer", - "title": "Max Groups" - }, - "fast_leave": { - "type": "boolean", - "title": "Fast Leave" - }, - "proxy": { - "type": "boolean", - "description": "Global proxy settings should be enabled before enabling per-vlan.\n", - "title": "Proxy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Snooping" - }, - "ip_name_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "description": "IPv4 or IPv6 address for DNS server.", - "title": "IP Address" - }, - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - }, - "priority": { - "description": "Priority value (lower is first).", - "type": "integer", - "minimum": 0, - "maximum": 4, - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Name Servers" - }, - "ip_nat": { - "type": "object", - "properties": { - "kernel_buffer_size": { - "type": "integer", - "minimum": 1, - "maximum": 64, - "description": "Buffer size in MB.", - "title": "Kernel Buffer Size" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "Specify VRF for NAT profile.", - "title": "VRF" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "pools": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "ip-port", - "port-only" - ], - "default": "ip-port", - "title": "Type" - }, - "prefix_length": { - "type": "integer", - "minimum": 16, - "maximum": 32, - "description": "It is only used and required when `type` is `ip-port`.", - "title": "Prefix Length" - }, - "ranges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "first_ip": { - "type": "string", - "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.", - "title": "First IP" - }, - "last_ip": { - "type": "string", - "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.\n`first_ip` and `last_ip` ip addresses should lie in same subnet.", - "title": "Last IP" - }, - "first_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "First Port" - }, - "last_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Required when `first_port` is set.\n`last_port` must be greater than or equal to `first_port`.", - "title": "Last Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Ranges" - }, - "utilization_log_threshold": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "title": "Utilization Log Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Pools" - }, - "synchronization": { - "type": "object", - "properties": { - "description": { - "type": "string", - "title": "Description" - }, - "expiry_interval": { - "type": "integer", - "minimum": 60, - "maximum": 3600, - "description": "In seconds.", - "title": "Expiry Interval" - }, - "local_interface": { - "type": "string", - "description": "EOS interface name.", - "title": "Local Interface" - }, - "peer_address": { - "type": "string", - "description": "IPv4 address.", - "title": "Peer Address" - }, - "port_range": { - "type": "object", - "properties": { - "first_port": { - "type": "integer", - "minimum": 1024, - "maximum": 65535, - "title": "First Port" - }, - "last_port": { - "type": "integer", - "minimum": 1024, - "maximum": 65535, - "description": ">= first_port.", - "title": "Last Port" - }, - "split_disabled": { - "type": "boolean", - "title": "Split Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Range" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Synchronization" - }, - "translation": { - "type": "object", - "properties": { - "address_selection": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "hash_field_source_ip": { - "type": "boolean", - "title": "Hash Field Source IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Selection" - }, - "counters": { - "type": "boolean", - "title": "Counters" - }, - "low_mark": { - "type": "object", - "properties": { - "percentage": { - "type": "integer", - "minimum": 1, - "maximum": 99, - "description": "Used to render 'ip nat translation low-mark '.", - "title": "Percentage" - }, - "host_percentage": { - "type": "integer", - "minimum": 1, - "maximum": 99, - "description": "Used to render 'ip nat translation low-mark host'.", - "title": "Host Percentage" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Low Mark" - }, - "max_entries": { - "type": "object", - "properties": { - "limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Limit" - }, - "host_limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Host Limit" - }, - "ip_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "IPv4 address.", - "title": "IP" - }, - "limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Limit" - } - }, - "required": [ - "limit", - "ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Limits" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Max Entries" - }, - "timeouts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "title": "Protocol" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "In seconds.", - "title": "Timeout" - } - }, - "required": [ - "timeout", - "protocol" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Timeouts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Translation" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ip_radius_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Radius Source Interfaces" - }, - "ip_routing": { - "type": "boolean", - "title": "IP Routing" - }, - "ip_routing_ipv6_interfaces": { - "type": "boolean", - "title": "IP Routing IPv6 Interfaces" - }, - "ip_security": { - "type": "object", - "properties": { - "ike_policies": { - "type": "array", - "description": "Internet Security Association and Key Mgmt Protocol.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "local_id": { - "type": "string", - "description": "Local IKE identification.\nCan be an IPv4 or an IPv6 address.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", - "title": "Local ID" - }, - "local_id_fqdn": { - "type": "string", - "description": "Local FQDN or UFQDN IKE identification.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", - "title": "Local ID Fqdn" - }, - "ike_lifetime": { - "type": "integer", - "minimum": 1, - "maximum": 24, - "description": "IKE lifetime in hours.", - "title": "Ike Lifetime" - }, - "encryption": { - "type": "string", - "enum": [ - "3des", - "aes128", - "aes256" - ], - "description": "IKE encryption algorithm.", - "title": "Encryption" - }, - "dh_group": { - "type": "integer", - "enum": [ - 1, - 2, - 5, - 14, - 15, - 16, - 17, - 20, - 21, - 24 - ], - "description": "Diffie-Hellman group for the key exchange.", - "title": "Dh Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ike Policies" - }, - "sa_policies": { - "type": "array", - "description": "Security Association policies.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the SA policy. The \"null\" value is deprecated and will be removed in AVD 5.0.0.", - "title": "Name" - }, - "sa_lifetime": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "description": "Lifetime value for this SA.\nValid range depends on the unit.\n<1-24> Lifetime in hours ( default )\n<1-4000000> Packet limit in thousands\n<1-6000> Byte limit in GB ( 1024 MB )\n<1-6144000> Byte limit in MB ( 1024 KB )", - "title": "Value" - }, - "unit": { - "type": "string", - "enum": [ - "gigabytes", - "hours", - "megabytes", - "thousand-packets" - ], - "default": "hours", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Lifetime" - }, - "esp": { - "type": "object", - "properties": { - "integrity": { - "type": "string", - "enum": [ - "disabled", - "sha1", - "sha256", - "null" - ], - "title": "Integrity" - }, - "encryption": { - "type": "string", - "enum": [ - "disabled", - "aes128", - "aes128gcm128", - "aes128gcm64", - "aes256", - "aes256gcm128", - "null" - ], - "title": "Encryption" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Esp" - }, - "pfs_dh_group": { - "type": "integer", - "enum": [ - 1, - 2, - 5, - 14, - 15, - 16, - 17, - 20, - 21, - 24 - ], - "title": "Pfs Dh Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Sa Policies" - }, - "profiles": { - "type": "array", - "description": "IPSec profiles.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the IPsec profile.", - "title": "Name" - }, - "ike_policy": { - "type": "string", - "description": "Name of the IKE policy to use in this profile.", - "title": "Ike Policy" - }, - "sa_policy": { - "type": "string", - "description": "Name of the Security Association to use in this profile.", - "title": "Sa Policy" - }, - "connection": { - "type": "string", - "description": "IPsec connection (Initiator/Responder/Dynamic).", - "enum": [ - "add", - "start", - "route" - ], - "title": "Connection" - }, - "shared_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Shared Key" - }, - "dpd": { - "type": "object", - "description": "Dead Peer Detection.", - "properties": { - "interval": { - "type": "integer", - "description": "Interval (in seconds) between keep-alive messages.", - "minimum": 2, - "maximum": 3600, - "title": "Interval" - }, - "time": { - "type": "integer", - "description": "Time (in seconds) after which the action is applied.", - "minimum": 10, - "maximum": 3600, - "title": "Time" - }, - "action": { - "type": "string", - "description": "Action to apply.\n\n* 'clear': Delete all connections\n* 'hold': Re-negotiate connection on demand\n* 'restart': Restart connection immediately\n", - "enum": [ - "clear", - "hold", - "restart" - ], - "title": "Action" - } - }, - "required": [ - "interval", - "time", - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dpd" - }, - "mode": { - "type": "string", - "description": "Ipsec mode type.", - "enum": [ - "transport", - "tunnel" - ], - "title": "Mode" - }, - "flow_parallelization_encapsulation_udp": { - "type": "boolean", - "description": "Enable flow parallelization.\nWhen enabled, multiple cores are used to parallelize the IPsec encryption and decryption processing.", - "title": "Flow Parallelization Encapsulation UDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "key_controller": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "IPsec profile name to use.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Key Controller" - }, - "hardware_encryption_disabled": { - "type": "boolean", - "default": false, - "description": "Disable hardware encryption.\nAn SFE restart is needed for this change to take effect.", - "title": "Hardware Encryption Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Security" - }, - "ip_ssh_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Interface Name.", - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "default": "default", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP SSH Client Source Interfaces" - }, - "ip_tacacs_source_interfaces": { - "type": "array", - "title": "IP Tacacs Source Interfaces", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_telnet_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Telnet Client Source Interfaces" - }, - "ip_tftp_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Tftp Client Source Interfaces" - }, - "ip_virtual_router_mac_address": { - "type": "string", - "description": "MAC address (hh:hh:hh:hh:hh:hh).", - "title": "IP Virtual Router MAC Address" - }, - "ipv6_access_lists": { - "type": "array", - "title": "IPv6 Extended Access-Lists", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ipv6_dhcp_relay": { - "type": "object", - "properties": { - "always_on": { - "type": "boolean", - "description": "DhcpRelay Agent will be in always-on mode, off by default.", - "title": "Always On" - }, - "all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "All Subnets" - }, - "option": { - "type": "object", - "description": "Insert DHCP Option.", - "properties": { - "link_layer_address": { - "type": "boolean", - "description": "Add Option 79 (Link Layer Address Option).", - "title": "Link Layer Address" - }, - "remote_id_format": { - "type": "string", - "enum": [ - "%m:%i", - "%m:%p" - ], - "description": "Add RemoteID option 37 in format MAC address and interface ID (`%m:%i`) or MAC address and interface name (`%m:%p`).", - "title": "Remote ID Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Option" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 DHCP Relay" - }, - "ipv6_hardware": { - "type": "object", - "properties": { - "fib": { - "type": "object", - "properties": { - "optimize": { - "type": "object", - "properties": { - "prefixes": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Pre-defined profile 'internet' or user-defined profile name.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Optimize" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fib" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Hardware" - }, - "ipv6_icmp_redirect": { - "type": "boolean", - "title": "IPv6 ICMP Redirect" - }, - "ipv6_neighbor": { - "type": "object", - "properties": { - "static_entries": { - "type": "array", - "description": "Static IPv6 neighbor entries.", - "items": { - "type": "object", - "properties": { - "ipv6_address": { - "type": "string", - "description": "IPv6 address of neighbor.", - "title": "IPv6 Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "interface": { - "type": "string", - "description": "Interface name.", - "title": "Interface" - }, - "mac_address": { - "type": "string", - "description": "MAC address of neighbor like 'aa:af:12:34:bc:bf'", - "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", - "title": "MAC Address" - } - }, - "required": [ - "ipv6_address", - "interface", - "mac_address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Entries" - }, - "persistent": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Restore the IPv6 neighbor cache after reboot.", - "title": "Enabled" - }, - "refresh_delay": { - "type": "integer", - "description": "Time to wait in seconds before refreshing the IPv6 neighbor cache after reboot (EOS default 600).\nIt will require setting the `enabled` key to true.\n", - "minimum": 600, - "maximum": 3600, - "title": "Refresh Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Persistent" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Neighbor" - }, - "ipv6_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Prefix Lists" - }, - "ipv6_standard_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Standard Access Lists" - }, - "ipv6_static_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "title": "VRF" - }, - "destination_address_prefix": { - "type": "string", - "description": "IPv6 Network/Mask.", - "title": "Destination Address Prefix" - }, - "interface": { - "type": "string", - "title": "Interface" - }, - "gateway": { - "type": "string", - "description": "IPv6 Address.", - "title": "Gateway" - }, - "track_bfd": { - "type": "boolean", - "description": "Track next-hop using BFD.", - "title": "Track BFD" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - }, - "tag": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Tag" - }, - "name": { - "type": "string", - "description": "Description.", - "title": "Name" - }, - "metric": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Static Routes" - }, - "ipv6_unicast_routing": { - "type": "boolean", - "title": "IPv6 Unicast Routing" - }, - "is_deployed": { - "description": "Key only used for documentation or validation purposes.", - "type": "boolean", - "default": true, - "title": "Is Deployed" - }, - "l2_protocol": { - "type": "object", - "properties": { - "forwarding_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "bfd per-link rfc-7130", - "e-lmi", - "isis", - "lacp", - "lldp", - "macsec", - "pause", - "stp" - ], - "title": "Name" - }, - "forward": { - "type": "boolean", - "title": "Forward" - }, - "tagged_forward": { - "type": "boolean", - "title": "Tagged Forward" - }, - "untagged_forward": { - "type": "boolean", - "title": "Untagged Forward" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Forwarding Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "lacp": { - "type": "object", - "description": "Set Link Aggregation Control Protocol (LACP) parameters.", - "properties": { - "port_id": { - "type": "object", - "description": "LACP port-ID range configuration.", - "properties": { - "range": { - "type": "object", - "properties": { - "begin": { - "type": "integer", - "description": "Minimum LACP port-ID range.", - "title": "Begin" - }, - "end": { - "type": "integer", - "description": "Maximum LACP port-ID range.", - "title": "End" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Range" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port ID" - }, - "rate_limit": { - "type": "object", - "description": "Set LACPDU rate limit options.", - "properties": { - "default": { - "type": "boolean", - "description": "Enable LACPDU rate limiting by default on all ports.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rate Limit" - }, - "system_priority": { - "type": "integer", - "description": "Set local system LACP priority.", - "minimum": 0, - "maximum": 65535, - "title": "System Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "links_minimum": { - "type": "integer", - "minimum": 1, - "maximum": 100000, - "title": "Links Minimum" - }, - "recovery_delay": { - "type": "integer", - "minimum": 0, - "maximum": 3600, - "title": "Recovery Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "lldp": { - "type": "object", - "properties": { - "timer": { - "type": "integer", - "title": "Timer" - }, - "timer_reinitialization": { - "type": "string", - "title": "Timer Reinitialization" - }, - "holdtime": { - "type": "integer", - "title": "Holdtime" - }, - "management_address": { - "type": "string", - "title": "Management Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "receive_packet_tagged_drop": { - "type": "string", - "title": "Receive Packet Tagged Drop" - }, - "tlvs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "link-aggregation", - "management-address", - "max-frame-size", - "med", - "port-description", - "port-vlan", - "power-via-mdi", - "system-capabilities", - "system-description", - "system-name", - "vlan-name" - ], - "title": "Name" - }, - "transmit": { - "type": "boolean", - "title": "Transmit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "TLVs" - }, - "run": { - "type": "boolean", - "title": "Run" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "load_interval": { - "type": "object", - "properties": { - "default": { - "type": "integer", - "description": "Default load interval in seconds.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Load Interval" - }, - "local_users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Username.", - "type": "string", - "title": "Name" - }, - "disabled": { - "type": "boolean", - "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", - "title": "Disabled" - }, - "privilege": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Initial privilege level with local EXEC authorization.\n", - "title": "Privilege" - }, - "role": { - "type": "string", - "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", - "title": "Role" - }, - "sha512_password": { - "type": "string", - "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", - "title": "SHA512 Password" - }, - "no_password": { - "type": "boolean", - "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", - "title": "No Password" - }, - "ssh_key": { - "type": "string", - "title": "SSH Key" - }, - "secondary_ssh_key": { - "type": "string", - "title": "Secondary SSH Key" - }, - "shell": { - "type": "string", - "description": "Specify shell for the user.\n", - "enum": [ - "/bin/bash", - "/bin/sh", - "/sbin/nologin" - ], - "title": "Shell" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Users" - }, - "logging": { - "type": "object", - "properties": { - "console": { - "type": "string", - "enum": [ - "debugging", - "informational", - "notifications", - "warnings", - "errors", - "critical", - "alerts", - "emergencies", - "disabled" - ], - "description": "Console logging severity level.\n", - "title": "Console" - }, - "monitor": { - "type": "string", - "enum": [ - "debugging", - "informational", - "notifications", - "warnings", - "errors", - "critical", - "alerts", - "emergencies", - "disabled" - ], - "description": "Monitor logging severity level.\n", - "title": "Monitor" - }, - "buffered": { - "type": "object", - "properties": { - "size": { - "type": "integer", - "minimum": 10, - "maximum": 2147483647, - "title": "Size" - }, - "level": { - "type": "string", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "disabled" - ], - "description": "Buffer logging severity level.\n", - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Buffered" - }, - "trap": { - "type": "string", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "system", - "warnings", - "disabled" - ], - "description": "Trap logging severity level.\n", - "title": "Trap" - }, - "synchronous": { - "type": "object", - "properties": { - "level": { - "type": "string", - "enum": [ - "alerts", - "all", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "disabled" - ], - "description": "Synchronous logging severity level.\n", - "default": "critical", - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Synchronous" - }, - "format": { - "type": "object", - "properties": { - "timestamp": { - "type": "string", - "enum": [ - "high-resolution", - "traditional", - "traditional timezone", - "traditional year", - "traditional timezone year", - "traditional year timezone" - ], - "description": "Timestamp format.", - "title": "Timestamp" - }, - "hostname": { - "type": "string", - "enum": [ - "fqdn", - "ipv4" - ], - "description": "Hostname format in syslogs. For hostname _only_, remove the line. (default EOS CLI behaviour).", - "title": "Hostname" - }, - "sequence_numbers": { - "type": "boolean", - "description": "Add sequence numbers to log messages.\n", - "title": "Sequence Numbers" - }, - "rfc5424": { - "type": "boolean", - "description": "Forward logs in RFC5424 format.\n", - "title": "Rfc5424" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "facility": { - "type": "string", - "enum": [ - "auth", - "cron", - "daemon", - "kern", - "local0", - "local1", - "local2", - "local3", - "local4", - "local5", - "local6", - "local7", - "lpr", - "mail", - "news", - "sys9", - "sys10", - "sys11", - "sys12", - "sys13", - "sys14", - "syslog", - "user", - "uucp" - ], - "title": "Facility" - }, - "source_interface": { - "type": "string", - "description": "Source Interface Name.", - "title": "Source Interface" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Syslog server name.", - "title": "Name" - }, - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "default": "udp", - "title": "Protocol" - }, - "ports": { - "type": "array", - "items": { - "type": "integer" - }, - "title": "Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "policy": { - "type": "object", - "properties": { - "match": { - "type": "object", - "properties": { - "match_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Match list.", - "title": "Name" - }, - "action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Match Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy" - }, - "event": { - "type": "object", - "properties": { - "storm_control": { - "type": "object", - "properties": { - "discards": { - "type": "object", - "properties": { - "global": { - "type": "boolean", - "title": "Global" - }, - "interval": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "description": "Logging interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - }, - "level": { - "type": "array", - "description": "Configure logging severity.", - "items": { - "type": "object", - "properties": { - "facility": { - "type": "string", - "title": "Facility" - }, - "severity": { - "type": "string", - "description": "Severity of facility. Below are the supported severites.\nemergencies System is unusable (severity=0)\nalerts Immediate action needed (severity=1)\ncritical Critical conditions (severity=2)\nerrors Error conditions (severity=3)\nwarnings Warning conditions (severity=4)\nnotifications Normal but significant conditions (severity=5)\ninformational Informational messages (severity=6)\ndebugging Debugging messages (severity=7)\n<0-7> Severity level value", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "title": "Severity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "facility" - ] - }, - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "loopback_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Loopback interface name e.g. \"Loopback0\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "mpls": { - "type": "object", - "properties": { - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "node_segment": { - "type": "object", - "properties": { - "ipv4_index": { - "type": "integer", - "title": "IPv4 Index" - }, - "ipv6_index": { - "type": "integer", - "title": "IPv6 Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Node Segment" - }, - "eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the loopback interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Loopback Interfaces" - }, - "mac_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "MAC Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "title": "Sequence" - }, - "action": { - "type": "string", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "MAC Access Lists" - }, - "mac_address_table": { - "type": "object", - "properties": { - "aging_time": { - "type": "integer", - "description": "Aging time in seconds.", - "title": "Aging Time" - }, - "notification_host_flap": { - "type": "object", - "properties": { - "logging": { - "type": "boolean", - "title": "Logging" - }, - "detection": { - "type": "object", - "properties": { - "window": { - "type": "integer", - "minimum": 2, - "maximum": 300, - "title": "Window" - }, - "moves": { - "type": "integer", - "minimum": 2, - "maximum": 10, - "title": "Moves" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Detection" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Notification Host Flap" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Table" - }, - "mac_security": { - "type": "object", - "title": "MAC Security (MACsec)", - "properties": { - "license": { - "type": "object", - "properties": { - "license_name": { - "type": "string", - "title": "License Name" - }, - "license_key": { - "type": "string", - "title": "License Key" - } - }, - "required": [ - "license_name", - "license_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "License" - }, - "fips_restrictions": { - "type": "boolean", - "title": "Fips Restrictions" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile-Name.", - "title": "Name" - }, - "cipher": { - "type": "string", - "enum": [ - "aes128-gcm", - "aes128-gcm-xpn", - "aes256-gcm", - "aes256-gcm-xpn" - ], - "title": "Cipher" - }, - "connection_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "encrypted_key": { - "type": "string", - "title": "Encrypted Key" - }, - "fallback": { - "type": "boolean", - "title": "Fallback" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Connection Keys" - }, - "mka": { - "type": "object", - "properties": { - "key_server_priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Key Server Priority" - }, - "session": { - "type": "object", - "properties": { - "rekey_period": { - "type": "integer", - "minimum": 30, - "maximum": 100000, - "description": "Rekey period in seconds.", - "title": "Rekey Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Session" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MKA" - }, - "sci": { - "type": "boolean", - "title": "SCI" - }, - "l2_protocols": { - "type": "object", - "properties": { - "ethernet_flow_control": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "encrypt", - "bypass" - ], - "title": "Mode" - } - }, - "required": [ - "mode" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Flow Control" - }, - "lldp": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "bypass", - "bypass unauthorized" - ], - "title": "Mode" - } - }, - "required": [ - "mode" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocols" - }, - "traffic_unprotected": { - "type": "object", - "properties": { - "action": { - "type": "string", - "description": "Allow/drop the transmit/receive of unprotected traffic.", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_active_sak": { - "type": "boolean", - "description": "Allow transmit/receive of encrypted traffic using operational SAK and block otherwise.", - "title": "Allow Active Sak" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Unprotected" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "maintenance": { - "type": "object", - "title": "Maintenance Mode", - "properties": { - "default_interface_profile": { - "type": "string", - "description": "Name of default Interface Profile.\n", - "title": "Default Interface Profile" - }, - "default_bgp_profile": { - "type": "string", - "description": "Name of default BGP Profile.\n", - "title": "Default BGP Profile" - }, - "default_unit_profile": { - "type": "string", - "description": "Name of default Unit Profile.\n", - "title": "Default Unit Profile" - }, - "interface_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "rate_monitoring": { - "type": "object", - "properties": { - "load_interval": { - "type": "integer", - "description": "Load Interval in Seconds.\n", - "title": "Load Interval" - }, - "threshold": { - "type": "integer", - "description": "Threshold in kbps.\n", - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rate Monitoring" - }, - "shutdown": { - "type": "object", - "properties": { - "max_delay": { - "type": "integer", - "description": "Max delay in seconds.\n", - "title": "Max Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Interface Profiles" - }, - "bgp_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "BGP Profile Name.", - "title": "Name" - }, - "initiator": { - "type": "object", - "properties": { - "route_map_inout": { - "type": "string", - "description": "Route Map.", - "title": "Route Map Inout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Initiator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "BGP Profiles" - }, - "unit_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unit Profile Name.", - "title": "Name" - }, - "on_boot": { - "type": "object", - "properties": { - "duration": { - "type": "integer", - "minimum": 300, - "maximum": 3600, - "description": "On-boot in seconds.\n", - "title": "Duration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "On Boot" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Unit Profiles" - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unit Name.", - "title": "Name" - }, - "quiesce": { - "type": "boolean", - "title": "Quiesce" - }, - "profile": { - "type": "string", - "description": "Name of Unit Profile.\n", - "title": "Profile" - }, - "groups": { - "type": "object", - "properties": { - "bgp_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Name of BGP Group.\n" - }, - "title": "BGP Groups" - }, - "interface_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Name of Interface Group.\n" - }, - "title": "Interface Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Units" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "management_accounts": { - "type": "object", - "properties": { - "password": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Password" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Accounts" - }, - "management_api_gnmi": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "default": "eos-native", - "title": "Provider" - }, - "transport": { - "type": "object", - "properties": { - "grpc": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Transport name.", - "title": "Name" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "vrf": { - "type": "string", - "description": "VRF name is optional.", - "title": "VRF" - }, - "notification_timestamp": { - "type": "string", - "enum": [ - "send-time", - "last-change-time" - ], - "description": "Per the gNMI specification, the default timestamp field of a notification message is set to be\nthe time at which the value of the underlying data source changes or when the reported event takes place.\nIn order to facilitate integration in legacy environments oriented around polling style operations,\nan option to support overriding the timestamp field to the send-time is available from EOS 4.27.0F.\n", - "title": "Notification Timestamp" - }, - "ip_access_group": { - "type": "string", - "description": "ACL name.", - "title": "IP Access Group" - }, - "port": { - "type": "integer", - "description": "GNMI port.\nMake sure to update the control-plane ACL accordingly in order for the service to be reachable by external applications.\n", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Grpc" - }, - "grpc_tunnels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Transport name.", - "title": "Name" - }, - "shutdown": { - "type": "boolean", - "description": "Operational status of the gRPC tunnel.", - "title": "Shutdown" - }, - "tunnel_ssl_profile": { - "type": "string", - "description": "Tunnel SSL profile name.", - "title": "Tunnel SSL Profile" - }, - "gnmi_ssl_profile": { - "type": "string", - "description": "gNMI SSL profile name.", - "title": "gNMI SSL Profile" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "destination": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "IP address or hostname.", - "title": "Address" - }, - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - } - }, - "required": [ - "address", - "port" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - } - }, - "required": [ - "name", - "port" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "target": { - "type": "object", - "properties": { - "use_serial_number": { - "type": "boolean", - "description": "Use serial number as the Target ID.", - "title": "Use Serial Number" - }, - "target_ids": { - "type": "array", - "description": "Target IDs as a list.\n", - "items": { - "type": "string" - }, - "title": "Target IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Grpc Tunnels" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transport" - }, - "enable_vrfs": { - "type": "array", - "description": "These should not be mixed with the new keys above.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use transport.grpc instead.", - "deprecated": true, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "access_group": { - "type": "string", - "description": "Standard IPv4 ACL name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Enable VRFs" - }, - "octa": { - "type": "object", - "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", - "deprecated": true, - "title": "Octa" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API gNMI" - }, - "management_api_http": { - "type": "object", - "properties": { - "enable_http": { - "type": "boolean", - "title": "Enable HTTP" - }, - "enable_https": { - "type": "boolean", - "title": "Enable Https" - }, - "https_ssl_profile": { - "description": "SSL Profile Name.", - "type": "string", - "title": "Https SSL Profile" - }, - "default_services": { - "type": "boolean", - "description": "Enable default services: capi-doc and tapagg.", - "title": "Default Services" - }, - "enable_vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "VRF Name.", - "type": "string", - "title": "Name" - }, - "access_group": { - "description": "Standard IPv4 ACL name.", - "type": "string", - "title": "Access Group" - }, - "ipv6_access_group": { - "description": "Standard IPv6 ACL name.", - "type": "string", - "title": "IPv6 Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Enable VRFs" - }, - "protocol_https_certificate": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "description": "Name of certificate; private key must also be specified.", - "title": "Certificate" - }, - "private_key": { - "type": "string", - "description": "Name of private key; certificate must also be specified.", - "title": "Private Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Protocol Https Certificate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API HTTP" - }, - "management_api_models": { - "type": "object", - "properties": { - "providers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "sysdb", - "smash" - ], - "title": "Name" - }, - "paths": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "title": "Path" - }, - "disabled": { - "type": "boolean", - "default": false, - "title": "Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Providers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API Models" - }, - "management_console": { - "type": "object", - "properties": { - "idle_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "title": "Idle Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Console" - }, - "management_cvx": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "server_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP or hostname." - }, - "title": "Server Hosts" - }, - "source_interface": { - "type": "string", - "description": "Interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management CVX" - }, - "management_defaults": { - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "hash": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "title": "Hash" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Defaults" - }, - "management_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Management Interface Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "type": { - "type": "string", - "enum": [ - "oob", - "inband" - ], - "default": "oob", - "description": "For documentation purposes only.", - "title": "Type" - }, - "gateway": { - "type": "string", - "description": "IPv4 address of default gateway in management VRF.", - "title": "Gateway" - }, - "ipv6_gateway": { - "type": "string", - "description": "IPv6 address of default gateway in management VRF.", - "title": "IPv6 Gateway" - }, - "mac_address": { - "type": "string", - "description": "MAC address.", - "title": "MAC Address" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the management interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Management Interfaces" - }, - "management_security": { - "type": "object", - "properties": { - "entropy_source": { - "type": "string", - "title": "Entropy Source" - }, - "entropy_sources": { - "type": "object", - "description": "Source of entropy.", - "properties": { - "hardware": { - "type": "boolean", - "description": "Use a hardware based source.", - "title": "Hardware" - }, - "haveged": { - "type": "boolean", - "description": "Use the HAVEGE algorithm.", - "title": "Haveged" - }, - "cpu_jitter": { - "type": "boolean", - "description": "Use the Jitter RNG algorithm of a CPU based source.", - "title": "CPU Jitter" - }, - "hardware_exclusive": { - "type": "boolean", - "description": "Only use entropy from the hardware source.", - "title": "Hardware Exclusive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Entropy Sources" - }, - "password": { - "type": "object", - "properties": { - "minimum_length": { - "type": "integer", - "minimum": 1, - "maximum": 32, - "title": "Minimum Length" - }, - "encryption_key_common": { - "type": "boolean", - "title": "Encryption Key Common" - }, - "encryption_reversible": { - "type": "string", - "title": "Encryption Reversible" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "minimum": { - "type": "object", - "properties": { - "digits": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Digits" - }, - "length": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Length" - }, - "lower": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Lower" - }, - "special": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Special" - }, - "upper": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Upper" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Minimum" - }, - "maximum": { - "type": "object", - "properties": { - "repetitive": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Repetitive" - }, - "sequential": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Sequential" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Password" - }, - "ssl_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "tls_versions": { - "type": "string", - "description": "List of allowed TLS versions as string.\nExamples:\n - \"1.0\"\n - \"1.0 1.1\"\n", - "title": "TLS Versions" - }, - "cipher_list": { - "type": "string", - "description": "cipher_list syntax follows the openssl cipher strings format.\nColon (:) separated list of allowed ciphers as a string.\n", - "title": "Cipher List" - }, - "trust_certificate": { - "type": "object", - "properties": { - "certificates": { - "type": "array", - "description": "List of trust certificate names.\nExamples:\n - test1.crt\n - test2.crt\n", - "items": { - "type": "string" - }, - "title": "Certificates" - }, - "requirement": { - "type": "object", - "properties": { - "basic_constraint_ca": { - "type": "boolean", - "title": "Basic Constraint Ca" - }, - "hostname_fqdn": { - "type": "boolean", - "description": "Enforce hostname to be FQDN without wildcard.\n", - "title": "Hostname Fqdn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Requirement" - }, - "policy_expiry_date_ignore": { - "type": "boolean", - "title": "Policy Expiry Date Ignore" - }, - "system": { - "type": "boolean", - "description": "Use system-supplied trust certificates.\n", - "title": "System" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trust Certificate" - }, - "chain_certificate": { - "type": "object", - "properties": { - "certificates": { - "type": "array", - "description": "List of chain certificate names.\nExamples:\n - chain1.crt\n - chain2.crt\n", - "items": { - "type": "string" - }, - "title": "Certificates" - }, - "requirement": { - "type": "object", - "properties": { - "basic_constraint_ca": { - "type": "boolean", - "title": "Basic Constraint Ca" - }, - "include_root_ca": { - "type": "boolean", - "title": "Include Root Ca" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Requirement" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Chain Certificate" - }, - "certificate": { - "type": "object", - "properties": { - "file": { - "type": "string", - "title": "File" - }, - "key": { - "type": "string", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Certificate" - }, - "certificate_revocation_lists": { - "type": "array", - "description": "List of CRLs (Certificate Revocation List).\nIf specified, one CRL needs to be provided for every certificate in the chain, even if the revocation list in the CRL is empty.\n", - "items": { - "type": "string" - }, - "title": "Certificate Revocation Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "SSL Profiles" - }, - "shared_secret_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "secrets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "secret": { - "type": "string", - "title": "Secret" - }, - "secret_type": { - "type": "string", - "default": "7", - "enum": [ - "0", - "7", - "8a" - ], - "title": "Secret Type" - }, - "receive_lifetime": { - "type": "object", - "properties": { - "infinite": { - "type": "boolean", - "title": "Infinite" - }, - "start_date_time": { - "type": "string", - "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "Start Date Time" - }, - "end_date_time": { - "type": "string", - "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "End Date Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Receive Lifetime" - }, - "transmit_lifetime": { - "type": "object", - "properties": { - "infinite": { - "type": "boolean", - "title": "Infinite" - }, - "start_date_time": { - "type": "string", - "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "Start Date Time" - }, - "end_date_time": { - "type": "string", - "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "End Date Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transmit Lifetime" - }, - "local_time": { - "type": "boolean", - "description": "Configuring secret using the local timezone from system clock. Default is UTC.", - "title": "Local Time" - } - }, - "required": [ - "secret", - "receive_lifetime", - "transmit_lifetime", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Secrets" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "profile" - ] - }, - "title": "Shared Secret Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Security" - }, - "management_ssh": { - "type": "object", - "properties": { - "access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Standard ACL Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Access Groups" - }, - "ipv6_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Standard ACL Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Access Groups" - }, - "idle_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "description": "Idle timeout in minutes.", - "title": "Idle Timeout" - }, - "cipher": { - "description": "Cryptographic ciphers for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Cipher" - }, - "key_exchange": { - "description": "Cryptographic key exchange methods for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Key Exchange" - }, - "mac": { - "description": "Cryptographic MAC algorithms for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "MAC" - }, - "fips_restrictions": { - "type": "boolean", - "description": "Use FIPS compliant algorithms.", - "title": "Fips Restrictions" - }, - "hostkey": { - "type": "object", - "properties": { - "server": { - "description": "SSH host key settings.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Server" - }, - "server_cert": { - "type": "string", - "description": "Configure switch's hostkey cert file.", - "title": "Server Cert" - }, - "client_strict_checking": { - "type": "boolean", - "description": "Enforce strict host key checking.", - "title": "Client Strict Checking" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hostkey" - }, - "enable": { - "description": "Enable SSH daemon.", - "type": "boolean", - "title": "Enable" - }, - "connection": { - "type": "object", - "properties": { - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum total number of SSH sessions to device.", - "title": "Limit" - }, - "per_host": { - "type": "integer", - "minimum": 1, - "maximum": 20, - "description": "Maximum number of SSH sessions to device from a single host.", - "title": "Per Host" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connection" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "enable": { - "description": "Enable SSH in VRF.", - "type": "boolean", - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "log_level": { - "type": "string", - "description": "SSH daemon log level.", - "title": "Log Level" - }, - "client_alive": { - "type": "object", - "properties": { - "count_max": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "Number of keep-alive packets that can be sent without a response before the connection is assumed dead.", - "title": "Count Max" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "Time period (in seconds) to send SSH keep-alive packets.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client Alive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management SSH" - }, - "management_tech_support": { - "type": "object", - "properties": { - "policy_show_tech_support": { - "type": "object", - "properties": { - "exclude_commands": { - "type": "array", - "items": { - "type": "object", - "properties": { - "command": { - "type": "string", - "description": "Command to exclude from tech-support.", - "title": "Command" - }, - "type": { - "type": "string", - "enum": [ - "text", - "json" - ], - "default": "text", - "description": "The supported values for type are platform dependent.", - "title": "Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Exclude Commands" - }, - "include_commands": { - "type": "array", - "items": { - "type": "object", - "properties": { - "command": { - "type": "string", - "description": "Command to include in tech-support.", - "title": "Command" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Include Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy Show Tech Support" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Tech Support" - }, - "match_list_input": { - "type": "object", - "title": "Match Lists", - "properties": { - "prefix_ipv4": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "minItems": 1, - "description": "List of IPv4 prefixes (with the subnet mask e.g. 192.0.2.0/24).", - "items": { - "type": "string" - }, - "title": "Prefixes" - } - }, - "required": [ - "prefixes", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix IPv4" - }, - "prefix_ipv6": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "minItems": 1, - "description": "List of IPv6 prefixes (with the subnet mask e.g. 2001:db8:abcd:0013::/64).", - "items": { - "type": "string" - }, - "title": "Prefixes" - } - }, - "required": [ - "prefixes", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix IPv6" - }, - "string": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Match-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "match_regex": { - "type": "string", - "description": "Regular Expression.", - "title": "Match Regex" - } - }, - "required": [ - "match_regex", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "String" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "mcs_client": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "cvx_secondary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "server_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP or hostname." - }, - "title": "Server Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CVX Secondary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MCS Client" - }, - "metadata": { - "type": "object", - "description": "The data under `metadata` is used for documentation, validation or integration purposes.\nIt will not affect the generated EOS configuration.", - "properties": { - "platform": { - "type": "string", - "title": "Platform" - }, - "system_mac_address": { - "type": "string", - "title": "System MAC Address" - }, - "cv_tags": { - "type": "object", - "properties": { - "device_tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Device Tags" - }, - "interface_tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "interface": { - "type": "string", - "title": "Interface" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tags" - } - }, - "required": [ - "interface" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Tags" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cv Tags" - }, - "cv_pathfinder": { - "type": "object", - "description": "Metadata used for CV Pathfinder visualization on CloudVision.", - "properties": { - "role": { - "type": "string", - "title": "Role" - }, - "region": { - "type": "string", - "title": "Region" - }, - "zone": { - "type": "string", - "title": "Zone" - }, - "site": { - "type": "string", - "title": "Site" - }, - "vtep_ip": { - "type": "string", - "title": "Vtep IP" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - }, - "address": { - "type": "string", - "title": "Address" - }, - "pathfinders": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vtep_ip": { - "type": "string", - "title": "Vtep IP" - } - }, - "required": [ - "vtep_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathfinders" - }, - "interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "carrier": { - "type": "string", - "title": "Carrier" - }, - "circuit_id": { - "type": "string", - "title": "Circuit ID" - }, - "pathgroup": { - "type": "string", - "title": "Pathgroup" - }, - "public_ip": { - "type": "string", - "title": "Public IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interfaces" - }, - "pathgroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "carriers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Carriers" - }, - "imported_carriers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Imported Carriers" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathgroups" - }, - "regions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "zones": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "sites": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "location": { - "type": "object", - "properties": { - "address": { - "type": "string", - "title": "Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Location" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sites" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Zones" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Regions" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "avts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "constraints": { - "type": "object", - "properties": { - "jitter": { - "type": "integer", - "title": "Jitter" - }, - "latency": { - "type": "integer", - "title": "Latency" - }, - "lossrate": { - "type": "string", - "title": "Lossrate" - }, - "hop_count": { - "type": "string", - "title": "Hop Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Constraints" - }, - "description": { - "type": "string", - "title": "Description" - }, - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "pathgroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "preference": { - "type": "string", - "title": "Preference" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathgroups" - }, - "application_profiles": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Application Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Avts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VRFs" - }, - "internet_exit_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "title": "Type" - }, - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - }, - "upload_bandwidth": { - "type": "integer", - "title": "Upload Bandwidth" - }, - "download_bandwidth": { - "type": "integer", - "title": "Download Bandwidth" - }, - "firewall": { - "type": "boolean", - "title": "Firewall" - }, - "ips_control": { - "type": "boolean", - "title": "Ips Control" - }, - "acceptable_use_policy": { - "type": "boolean", - "title": "Acceptable Use Policy" - }, - "vpn_credentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fqdn": { - "type": "string", - "title": "Fqdn" - }, - "vpn_type": { - "type": "string", - "title": "VPN Type" - }, - "pre_shared_key": { - "type": "string", - "title": "Pre Shared Key" - } - }, - "required": [ - "fqdn", - "vpn_type", - "pre_shared_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VPN Credentials" - }, - "tunnels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "preference": { - "type": "string", - "title": "Preference" - } - }, - "required": [ - "name", - "preference" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tunnels" - } - }, - "required": [ - "name", - "type", - "city", - "country", - "firewall", - "ips_control", - "acceptable_use_policy", - "vpn_credentials", - "tunnels" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Internet Exit Policies" - }, - "applications": { - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "builtin_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Builtin Applications" - }, - "user_defined_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "User Defined Applications" - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "properties": { - "category": { - "type": "string", - "title": "Category" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Categories" - }, - "transport_protocols": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Transport Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Profiles" - }, - "categories": { - "type": "object", - "properties": { - "builtin_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "category": { - "type": "string", - "title": "Category" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Builtin Applications" - }, - "user_defined_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "category": { - "type": "string", - "title": "Category" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "User Defined Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Categories" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cv Pathfinder" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Metadata" - }, - "mlag_configuration": { - "type": "object", - "title": "Multi-Chassis Link Aggregation (MLAG) Configuration", - "properties": { - "domain_id": { - "type": "string", - "title": "Domain ID" - }, - "heartbeat_interval": { - "type": "integer", - "description": "Heartbeat interval in milliseconds.", - "title": "Heartbeat Interval" - }, - "local_interface": { - "description": "Local Interface Name.", - "type": "string", - "title": "Local Interface" - }, - "peer_address": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "Peer Address" - }, - "peer_address_heartbeat": { - "type": "object", - "properties": { - "peer_ip": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "Peer IP" - }, - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Peer Address Heartbeat" - }, - "dual_primary_detection_delay": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Detection Delay" - }, - "dual_primary_recovery_delay_mlag": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Recovery Delay MLAG" - }, - "dual_primary_recovery_delay_non_mlag": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Recovery Delay Non MLAG" - }, - "peer_link": { - "description": "Port-Channel interface name.", - "type": "string", - "title": "Peer Link" - }, - "reload_delay_mlag": { - "type": "string", - "description": "Delay in seconds <0-86400> or 'infinity'.", - "title": "Reload Delay MLAG" - }, - "reload_delay_non_mlag": { - "type": "string", - "description": "Delay in seconds <0-86400> or 'infinity'.", - "title": "Reload Delay Non MLAG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "monitor_connectivity": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "interval": { - "type": "integer", - "title": "Interval" - }, - "interface_sets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "interfaces": { - "type": "string", - "description": "Interface range(s) should be of same type, Ethernet, Loopback, Management etc.\nMultiple interface ranges can be specified separated by \",\".\n", - "title": "Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Sets" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Host Name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip": { - "type": "string", - "title": "IP" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "url": { - "type": "string", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "VRF Name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "interface_sets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "interfaces": { - "type": "string", - "title": "Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Sets" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Host name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip": { - "type": "string", - "title": "IP" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "url": { - "type": "string", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Connectivity" - }, - "monitor_layer1": { - "type": "object", - "description": "Enable SYSLOG messages on transceiver SMBus communication failures.", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable monitor layer1.", - "title": "Enabled" - }, - "logging_mac_fault": { - "type": "boolean", - "description": "Enable MAC fault logging.", - "title": "Logging MAC Fault" - }, - "logging_transceiver": { - "type": "object", - "description": "Configure transceiver monitoring logging.", - "properties": { - "dom": { - "type": "boolean", - "description": "Enable transceiver Digital Optical Monitoring (DOM) logging.", - "title": "Dom" - }, - "communication": { - "type": "boolean", - "description": "Enable transceiver SMBus fail and reset logging.", - "title": "Communication" - }, - "enabled": { - "type": "boolean", - "description": "Some platforms support only the `logging transceiver` command. `enabled` key configures this command.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging Transceiver" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Layer1" - }, - "monitor_sessions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Session Name.", - "title": "Name" - }, - "sources": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name, range or comma separated list.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "rx", - "tx", - "both" - ], - "title": "Direction" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL Name.", - "type": "string", - "title": "Name" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sources" - }, - "destinations": { - "type": "array", - "items": { - "type": "string", - "description": "'cpu' or interface name, range or comma separated list." - }, - "title": "Destinations" - }, - "encapsulation_gre_metadata_tx": { - "type": "boolean", - "title": "Encapsulation Gre Metadata TX" - }, - "header_remove_size": { - "type": "integer", - "description": "Number of bytes to remove from header.", - "title": "Header Remove Size" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL Name.", - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - }, - "rate_limit_per_ingress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Ingress Chip" - }, - "rate_limit_per_egress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Egress Chip" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "truncate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "size": { - "type": "integer", - "description": "Size in bytes.", - "title": "Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Truncate" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Monitor Sessions" - }, - "monitor_telemetry_influx": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "title": "VRF" - }, - "destinations": { - "type": "array", - "description": "Configure telemetry output destinations.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "InfluxDB connection name.", - "title": "Name" - }, - "database": { - "type": "string", - "description": "Set name of the database.", - "title": "Database" - }, - "data_retention_policy": { - "type": "string", - "title": "Data Retention Policy" - }, - "url": { - "type": "string", - "description": "It only accepts http(s), udp and unix domain destination URL.", - "pattern": "(http(s)?|udp|unix)://.+", - "title": "URL" - }, - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "title": "Password" - }, - "password_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Password Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Destinations" - }, - "source_group_standard_disabled": { - "type": "boolean", - "description": "Disable standard set of telemetry.", - "title": "Source Group Standard Disabled" - }, - "source_sockets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Label of the socket connection.", - "title": "Name" - }, - "connection_limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Connection Limit" - }, - "url": { - "type": "string", - "description": "It only accepts http(s), udp and unix domain socket URL.", - "pattern": "(http(s)?|udp|unix)://.+", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Source Sockets" - }, - "tags": { - "type": "array", - "description": "Extra tags added to the telemetry output.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Key of the global tag pair.", - "title": "Name" - }, - "value": { - "type": "string", - "description": "Value of the global tag pair.", - "title": "Value" - } - }, - "required": [ - "value", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tags" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Telemetry Influx" - }, - "monitor_telemetry_postcard_policy": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "default": true, - "description": "Enable or disable the postcard telemetry feature.", - "title": "Disabled" - }, - "ingress": { - "type": "object", - "properties": { - "collection": { - "type": "object", - "description": "Collector configuration.", - "properties": { - "source": { - "type": "string", - "description": "Source IP address of GRE tunnel.", - "title": "Source" - }, - "destination": { - "type": "string", - "description": "Destination IP address of GRE tunnel.", - "title": "Destination" - }, - "version": { - "type": "integer", - "description": "Postcard version.", - "enum": [ - 1, - 2 - ], - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collection" - }, - "sample": { - "type": "object", - "description": "Sampling parameters.", - "properties": { - "rate": { - "type": "integer", - "description": "Sampling rate. `rate` is preferred when both `rate` and `tcp_udp_checksum` are defined.", - "enum": [ - 16384, - 32768, - 65536 - ], - "title": "Rate" - }, - "tcp_udp_checksum": { - "type": "object", - "description": "TCP/UDP parameters.", - "properties": { - "value": { - "type": "integer", - "description": "TCP/UDP checksum or IP ID value.", - "minimum": 0, - "maximum": 65535, - "title": "Value" - }, - "mask": { - "type": "string", - "description": "16 bit hexadecimal mask for TCP/UDP or IP ID with atmost 2 unset bits.", - "title": "Mask" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP UDP Checksum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sample" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ingress" - }, - "marker_vxlan": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable vxlan marking using default bit 0.", - "title": "Enabled" - }, - "header_word_zero_bit": { - "type": "integer", - "minimum": 1, - "maximum": 31, - "title": "Header Word Zero Bit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Marker VxLAN" - }, - "profiles": { - "type": "array", - "description": "Postcard telemetry profiles.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile name.", - "title": "Name" - }, - "ingress_sample_policy": { - "type": "string", - "title": "Ingress Sample Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "sample_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "match_rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "description": "IP address version.", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Type" - }, - "destination_prefix": { - "type": "string", - "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", - "title": "Destination Prefix" - }, - "source_prefix": { - "type": "string", - "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", - "title": "Source Prefix" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "title": "Protocol" - }, - "source_ports": { - "type": "array", - "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\" ]\n [ \"www\" ]", - "items": { - "type": "string" - }, - "title": "Source Ports" - }, - "destination_ports": { - "type": "array", - "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\", \"80\" ]\n [ \"https\" ]", - "items": { - "type": "string" - }, - "title": "Destination Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "protocol" - ] - }, - "title": "Protocols" - } - }, - "required": [ - "type", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Match Rules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Sample Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Telemetry Postcard Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface_disabled_default": { - "type": "boolean", - "title": "Interface Disabled Default" - }, - "router_id": { - "type": "string", - "title": "Router ID" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "transport_address_interface": { - "description": "Interface Name.", - "type": "string", - "title": "Transport Address Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - }, - "icmp": { - "description": "Enables the LSRs to generate ICMP reply messages and deliver them to the originating host.", - "type": "object", - "properties": { - "fragmentation_needed_tunneling": { - "type": "boolean", - "description": "Enables the MPLS tunneling of MTU exceeded ICMP replies (fragmentation needed, packet too big).", - "title": "Fragmentation Needed Tunneling" - }, - "ttl_exceeded_tunneling": { - "type": "boolean", - "description": "Enables the MPLS tunneling of TTL exceeded ICMP replies.", - "title": "TTL Exceeded Tunneling" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ICMP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "name_server": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "nodes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Nodes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Name Server" - }, - "ntp": { - "type": "object", - "properties": { - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Source interface.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", - "title": "Name" - }, - "burst": { - "type": "boolean", - "title": "Burst" - }, - "iburst": { - "type": "boolean", - "title": "Iburst" - }, - "key": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key" - }, - "local_interface": { - "type": "string", - "description": "Source interface.", - "title": "Local Interface" - }, - "maxpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of maxpoll between 3 - 17 (Logarithmic).", - "title": "Maxpoll" - }, - "minpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of minpoll between 3 - 17 (Logarithmic).", - "title": "Minpoll" - }, - "preferred": { - "type": "boolean", - "title": "Preferred" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 4, - "title": "Version" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Servers" - }, - "authenticate": { - "type": "boolean", - "title": "Authenticate" - }, - "authenticate_servers_only": { - "type": "boolean", - "title": "Authenticate Servers Only" - }, - "authentication_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65534, - "description": "Key identifier.", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Obfuscated key.", - "title": "Key" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "title": "Key Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Authentication Keys" - }, - "trusted_keys": { - "type": "string", - "description": "List of trusted-keys as string ex. 10-12,15.", - "title": "Trusted Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "NTP" - }, - "patch_panel": { - "type": "object", - "properties": { - "connector": { - "type": "object", - "properties": { - "interface": { - "type": "object", - "properties": { - "patch": { - "type": "object", - "properties": { - "bgp_vpws_remote_failure_errdisable": { - "type": "boolean", - "title": "BGP Vpws Remote Failure Errdisable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Patch" - }, - "recovery": { - "type": "object", - "properties": { - "review_delay": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "minimum": 10, - "maximum": 600, - "description": "Minimum delay.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 15, - "maximum": 900, - "description": "Maximum delay.", - "title": "Max" - } - }, - "required": [ - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Review Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Recovery" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connector" - }, - "patches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "connectors": { - "type": "array", - "minItems": 2, - "maxItems": 2, - "description": "Must have exactly two connectors to a patch of which at least one must be of type \"interface\".", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "type": { - "type": "string", - "enum": [ - "interface", - "pseudowire" - ], - "title": "Type" - }, - "endpoint": { - "type": "string", - "description": "String with relevant endpoint depending on type.\nExamples:\n- \"Ethernet1\"\n- \"Ethernet1 dot1q vlan 123\"\n- \"bgp vpws TENANT_A pseudowire VPWS_PW_1\"\n- \"ldp LDP_PW_1\"\n", - "title": "Endpoint" - } - }, - "required": [ - "type", - "endpoint", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Connectors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Patches" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Patch Panel" - }, - "peer_filters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-filter Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "match": { - "type": "string", - "description": "Match as string.\nExample: \"as-range 1-100 result accept\"\n", - "title": "Match" - } - }, - "required": [ - "match", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Peer Filters" - }, - "platform": { - "type": "object", - "description": "Every key below this point is platform dependent.", - "properties": { - "trident": { - "type": "object", - "properties": { - "forwarding_table_partition": { - "type": "string", - "title": "Forwarding Table Partition" - }, - "mmu": { - "type": "object", - "description": "Memory Management Unit settings.\n", - "properties": { - "active_profile": { - "type": "string", - "description": "The queue profile to be applied to the platform.\n", - "title": "Active Profile" - }, - "queue_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "multicast_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "ID" - }, - "unit": { - "type": "string", - "enum": [ - "bytes", - "cells" - ], - "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", - "title": "Unit" - }, - "reserved": { - "type": "integer", - "description": "Amount of memory that should be reserved for this\nqueue.\n", - "title": "Reserved" - }, - "threshold": { - "type": "string", - "description": "Dynamic Shared Memory threshold.\n", - "title": "Threshold" - }, - "drop": { - "type": "object", - "properties": { - "precedence": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "title": "Precedence" - }, - "threshold": { - "type": "string", - "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", - "title": "Threshold" - } - }, - "required": [ - "precedence", - "threshold" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Multicast Queues" - }, - "unicast_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "ID" - }, - "unit": { - "type": "string", - "enum": [ - "bytes", - "cells" - ], - "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", - "title": "Unit" - }, - "reserved": { - "type": "integer", - "description": "Amount of memory that should be reserved for this\nqueue.\n", - "title": "Reserved" - }, - "threshold": { - "type": "string", - "description": "Dynamic Shared Memory threshold.\n", - "title": "Threshold" - }, - "drop": { - "type": "object", - "properties": { - "precedence": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "title": "Precedence" - }, - "threshold": { - "type": "string", - "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", - "title": "Threshold" - } - }, - "required": [ - "precedence", - "threshold" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Unicast Queues" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Queue Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mmu" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trident" - }, - "sand": { - "type": "object", - "description": "Most of the platform sand options are hardware dependent and optional.", - "properties": { - "qos_maps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Traffic Class" - }, - "to_network_qos": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "title": "To Network QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "QOS Maps" - }, - "lag": { - "type": "object", - "properties": { - "hardware_only": { - "type": "boolean", - "title": "Hardware Only" - }, - "mode": { - "type": "string", - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LAG" - }, - "forwarding_mode": { - "type": "string", - "title": "Forwarding Mode" - }, - "multicast_replication": { - "type": "object", - "properties": { - "default": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast Replication" - }, - "mdb_profile": { - "type": "string", - "description": "Sand platforms MDB Profile configuration. Note: l3-xxxl does not support MLAG.", - "enum": [ - "balanced", - "balanced-xl", - "l3", - "l3-xl", - "l3-xxl", - "l3-xxxl" - ], - "title": "MDB Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sand" - }, - "sfe": { - "type": "object", - "description": "Sfe (Software Forwarding Engine) settings.", - "properties": { - "data_plane_cpu_allocation_max": { - "type": "integer", - "description": "Maximum number of CPUs used for data plane traffic forwarding.", - "minimum": 1, - "maximum": 128, - "title": "Data Plane CPU Allocation Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sfe" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Platform" - }, - "poe": { - "type": "object", - "properties": { - "reboot": { - "type": "object", - "description": "Set the global PoE power behavior for PoE ports when the system is rebooted.", - "properties": { - "action": { - "type": "string", - "enum": [ - "power-off", - "maintain" - ], - "description": "PoE action for interface. By default in EOS, reboot action is set to power-off.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "interface_shutdown": { - "type": "object", - "description": "Set the global PoE power behavior for PoE ports when ports are admin down.", - "properties": { - "action": { - "type": "string", - "enum": [ - "power-off", - "maintain" - ], - "description": "PoE action for interface. By default in EOS, interface shutdown action is set to maintain.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "policy_maps": { - "type": "object", - "properties": { - "pbr": { - "type": "array", - "description": "PBR Policy-Maps.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy-Map Name.", - "title": "Name" - }, - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class Name.", - "title": "Name" - }, - "index": { - "type": "integer", - "title": "Index" - }, - "drop": { - "description": "'drop' and 'set' are mutually exclusive.", - "type": "boolean", - "title": "Drop" - }, - "set": { - "description": "Set Nexthop\n'drop' and 'set' are mutually exclusive.\n", - "type": "object", - "properties": { - "nexthop": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "IP Address" - }, - "recursive": { - "type": "boolean", - "title": "Recursive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Nexthop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "PBR" - }, - "qos": { - "type": "array", - "description": "QOS Policy-Maps.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy-Map Name.", - "title": "Name" - }, - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class Name.", - "title": "Name" - }, - "set": { - "type": "object", - "properties": { - "cos": { - "type": "integer", - "title": "COS" - }, - "dscp": { - "type": "string", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "title": "Traffic Class" - }, - "drop_precedence": { - "type": "integer", - "title": "Drop Precedence" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set" - }, - "police": { - "type": "object", - "properties": { - "rate": { - "type": "integer", - "description": "Specify rate.\nRange in kbps <8-200000000>.", - "title": "Rate" - }, - "rate_unit": { - "type": "string", - "enum": [ - "bps", - "kbps", - "mbps", - "pps" - ], - "default": "bps", - "title": "Rate Unit" - }, - "rate_burst_size": { - "type": "integer", - "description": "Range in bytes <256-128000000>.", - "title": "Rate Burst Size" - }, - "rate_burst_size_unit": { - "type": "string", - "enum": [ - "bytes", - "kbytes", - "mbytes", - "packets" - ], - "default": "bytes", - "title": "Rate Burst Size Unit" - }, - "action": { - "type": "object", - "properties": { - "type": { - "description": "Set action for policed traffic.", - "type": "string", - "enum": [ - "dscp", - "drop-precedence" - ], - "title": "Type" - }, - "dscp_value": { - "description": "Set when action.type is set to \"dscp\".", - "type": "string", - "title": "DSCP Value" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Action" - }, - "higher_rate": { - "type": "integer", - "description": "Specify higher rate.\nRange in kbps .", - "title": "Higher Rate" - }, - "higher_rate_unit": { - "type": "string", - "enum": [ - "bps", - "kbps", - "mbps", - "pps" - ], - "default": "bps", - "title": "Higher Rate Unit" - }, - "higher_rate_burst_size": { - "type": "integer", - "description": "Range in bytes <256-128000000>.", - "title": "Higher Rate Burst Size" - }, - "higher_rate_burst_size_unit": { - "type": "string", - "enum": [ - "bytes", - "kbytes", - "mbytes", - "packets" - ], - "default": "bytes", - "title": "Higher Rate Burst Size Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Police" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS" - }, - "copp_system_policy": { - "type": "object", - "description": "Control-plane policy configuration.", - "properties": { - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "shape": { - "type": "integer", - "description": "Maximum rate limit.", - "minimum": 0, - "maximum": 10000000, - "title": "Shape" - }, - "bandwidth": { - "type": "integer", - "description": "Minimum bandwidth.", - "minimum": 0, - "maximum": 10000000, - "title": "Bandwidth" - }, - "rate_unit": { - "type": "string", - "description": "The `rate_unit` must be defined for `shape` and `bandwidth`.", - "enum": [ - "pps", - "kbps" - ], - "title": "Rate Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Copp System Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy Maps" - }, - "port_channel_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulation are all optional, and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "native_vlan": { - "type": "integer", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "mlag": { - "type": "integer", - "description": "MLAG ID.", - "minimum": 1, - "maximum": 2000, - "title": "MLAG" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "lacp_fallback_timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "default": 90, - "minimum": 0, - "maximum": 300, - "title": "LACP Fallback Timeout" - }, - "lacp_fallback_mode": { - "type": "string", - "enum": [ - "individual", - "static" - ], - "title": "LACP Fallback Mode" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "neighbor": { - "type": "string", - "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", - "title": "Neighbor" - }, - "per_link": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rfc_7130": { - "type": "boolean", - "title": "Rfc 7130" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Per Link" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "default": false, - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "esi": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", - "deprecated": true, - "title": "Esi" - }, - "rt": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", - "deprecated": true, - "title": "Rt" - }, - "lacp_id": { - "type": "string", - "description": "LACP ID with format xxxx.xxxx.xxxx.", - "title": "LACP ID" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - }, - "mpass": { - "type": "boolean", - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "Mpass" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 address/mask.", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Port Channel Interfaces" - }, - "prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit 10.255.0.0/27 eq 32\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Prefix Lists" - }, - "priority_flow_control": { - "type": "object", - "description": "Global Priority Flow Control settings.\n", - "properties": { - "all_off": { - "type": "boolean", - "description": "Disable PFC on all interfaces.\n", - "title": "All Off" - }, - "watchdog": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "drop", - "no-drop" - ], - "description": "Action on stuck queue.\n", - "title": "Action" - }, - "timeout": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Timeout" - }, - "polling_interval": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,3})?$", - "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point.\nExample: 0.005 or 60\n", - "title": "Polling Interval" - }, - "recovery_time": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Recovery Time" - }, - "override_action_drop": { - "type": "boolean", - "description": "Override configured action on stuck queue to drop.\n", - "title": "Override Action Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Watchdog" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "prompt": { - "type": "string", - "title": "Prompt" - }, - "ptp": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "boundary", - "disabled", - "e2etransparent", - "gptp", - "ordinarymaster", - "p2ptransparent" - ], - "title": "Mode" - }, - "profile": { - "type": "string", - "enum": [ - "g8275.1", - "g8275.2" - ], - "title": "Profile" - }, - "mode_one_step": { - "type": "boolean", - "title": "Mode One Step" - }, - "forward_unicast": { - "type": "boolean", - "title": "Forward Unicast" - }, - "clock_identity": { - "type": "string", - "description": "The clock-id in xx:xx:xx:xx:xx:xx format.", - "title": "Clock Identity" - }, - "source": { - "type": "object", - "properties": { - "ip": { - "description": "Source IP.", - "type": "string", - "title": "IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "priority1": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority1" - }, - "priority2": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority2" - }, - "ttl": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "TTL" - }, - "domain": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Domain" - }, - "message_type": { - "type": "object", - "properties": { - "general": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "General" - }, - "event": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Message Type" - }, - "monitor": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "threshold": { - "type": "object", - "properties": { - "offset_from_master": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Offset From Master" - }, - "mean_path_delay": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Mean Path Delay" - }, - "drop": { - "type": "object", - "properties": { - "offset_from_master": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Offset From Master" - }, - "mean_path_delay": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Mean Path Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - }, - "missing_message": { - "type": "object", - "properties": { - "intervals": { - "type": "object", - "properties": { - "announce": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Announce" - }, - "follow_up": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Follow Up" - }, - "sync": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Intervals" - }, - "sequence_ids": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "announce": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Announce" - }, - "delay_resp": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Delay Resp" - }, - "follow_up": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Follow Up" - }, - "sync": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sequence IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Message" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "qos": { - "type": "object", - "properties": { - "map": { - "type": "object", - "properties": { - "cos": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"0 1 to traffic-class 1\"\n" - }, - "title": "COS" - }, - "dscp": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"8 9 10 to traffic-class 1\"\n" - }, - "title": "DSCP" - }, - "exp": { - "type": "array", - "items": { - "type": "string", - "description": "Example \"0 to traffic-class 0\"\n" - }, - "title": "EXP" - }, - "traffic_class": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"1 to dscp 32\"\n" - }, - "title": "Traffic Class" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Map" - }, - "rewrite_dscp": { - "type": "boolean", - "title": "Rewrite DSCP" - }, - "random_detect": { - "type": "object", - "description": "Global random-detect settings.", - "properties": { - "ecn": { - "type": "object", - "description": "Global ECN Configuration.", - "properties": { - "allow_non_ect": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Allow non-ect and set drop-precedence 1 in a policy map simultaneously.\nCheck which command is required for your platform.", - "title": "Enabled" - }, - "chip_based": { - "type": "boolean", - "description": "Allow non-ect chip-based.", - "title": "Chip Based" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allow Non Ect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "qos_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile-Name.", - "title": "Name" - }, - "trust": { - "type": "string", - "enum": [ - "cos", - "dscp", - "disabled" - ], - "title": "Trust" - }, - "cos": { - "type": "integer", - "title": "COS" - }, - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "service_policy": { - "type": "object", - "properties": { - "type": { - "type": "object", - "properties": { - "qos_input": { - "type": "string", - "description": "Policy-map name.", - "title": "QOS Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.", - "title": "Comment" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Units to be used for the threshold values.\nThis should be one of segments, byte, kbytes, mbytes.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Random-detect ECN maximum mark probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - }, - "drop": { - "description": "Set WRED parameters.", - "type": "object", - "properties": { - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "microseconds", - "milliseconds" - ], - "description": "Units to be used for the threshold values.", - "title": "Units" - }, - "drop_precedence": { - "type": "integer", - "minimum": 0, - "maximum": 2, - "description": "Specify Drop Precedence value.", - "title": "Drop Precedence" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "WRED minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "WRED maximum-threshold.", - "title": "Max" - }, - "drop_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "WRED drop probability.", - "title": "Drop Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "WRED weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max", - "drop_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "TX Queues" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "UC TX queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.", - "title": "Comment" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Unit to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Random-detect ECN maximum mark probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - }, - "drop": { - "description": "Set WRED parameters.", - "type": "object", - "properties": { - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "microseconds", - "milliseconds" - ], - "description": "Units to be used for the threshold values.", - "title": "Units" - }, - "drop_precedence": { - "type": "integer", - "minimum": 0, - "maximum": 2, - "description": "Specify Drop Precedence value.", - "title": "Drop Precedence" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "WRED minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "WRED maximum-threshold.", - "title": "Max" - }, - "drop_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "WRED drop probability.", - "title": "Drop Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "WRED weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max", - "drop_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Uc TX Queues" - }, - "mc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "MC TX queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.\n", - "title": "Comment" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Mc TX Queues" - }, - "priority_flow_control": { - "type": "object", - "description": "Priority Flow Control settings.\n", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable Priority Flow control.\n", - "title": "Enabled" - }, - "watchdog": { - "type": "object", - "description": "Watchdog can detect stuck transmit queues.\n", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable the watchdog on stuck transmit queues.\n", - "title": "Enabled" - }, - "action": { - "type": "string", - "enum": [ - "drop", - "notify-only" - ], - "description": "Override the default error-disable action to either drop\ntraffic on the stuck queue or notify-only\nwithout making any actions on the stuck queue.\n", - "title": "Action" - }, - "timer": { - "type": "object", - "description": "Timer thresholds whilst monitoring queues.\n", - "properties": { - "timeout": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Timeout" - }, - "polling_interval": { - "type": "string", - "pattern": "^auto|\\d+(\\.\\d{1,3})?$", - "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point or set\nto 'auto' based on recovery_time and timeout values.\nExample: 0.005 or 60\n", - "title": "Polling Interval" - }, - "recovery_time": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Recovery Time" - }, - "forced": { - "type": "boolean", - "description": "Force recover any stuck queue(s) after the duration,\nirrespective of whether PFC frames are being\nreceived or not.\n", - "title": "Forced" - } - }, - "required": [ - "timeout", - "polling_interval", - "recovery_time" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timer" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Watchdog" - }, - "priorities": { - "type": "array", - "description": "Set the drop/no_drop on each queue.\n", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Priority queue number (COS value).\n", - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "description": "Enable Priority Flow Control frames on this queue.\n", - "title": "No Drop" - } - }, - "required": [ - "priority", - "no_drop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS Profiles" - }, - "queue_monitor_length": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default_thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "description": "Default high threshold for Ethernet Interfaces.\n", - "title": "High" - }, - "low": { - "type": "integer", - "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Thresholds" - }, - "log": { - "type": "integer", - "description": "Logging interval in seconds.", - "title": "Log" - }, - "notifying": { - "type": "boolean", - "description": "Should only be used for platforms supporting the \"queue-monitor length notifying\" CLI.", - "title": "Notifying" - }, - "cpu": { - "type": "object", - "properties": { - "thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "title": "High" - }, - "low": { - "type": "integer", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Thresholds" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CPU" - }, - "tx_latency": { - "type": "boolean", - "description": "Enable tx-latency mode.", - "title": "TX Latency" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Queue Monitor Length" - }, - "queue_monitor_streaming": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "ip_access_group": { - "type": "string", - "description": "Name of IP ACL.", - "title": "IP Access Group" - }, - "ipv6_access_group": { - "type": "string", - "description": "Name of IPv6 ACL.", - "title": "IPv6 Access Group" - }, - "max_connections": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "title": "Max Connections" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Queue Monitor Streaming" - }, - "radius_server": { - "type": "object", - "properties": { - "attribute_32_include_in_access_req": { - "type": "object", - "properties": { - "hostname": { - "type": "boolean", - "title": "Hostname" - }, - "format": { - "type": "string", - "description": "Specify the format of the NAS-Identifier. If 'hostname' is set, this is ignored.", - "title": "Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Attribute 32 Include In Access Req" - }, - "dynamic_authorization": { - "type": "object", - "properties": { - "port": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - }, - "tls_ssl_profile": { - "type": "string", - "description": "Name of TLS profile.", - "title": "TLS SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic Authorization" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "tls": { - "type": "object", - "description": "When TLS is configured, `key` is ignored..", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable TLS for radius-server.", - "title": "Enabled" - }, - "ssl_profile": { - "type": "string", - "description": "Name of TLS profile.", - "title": "SSL Profile" - }, - "port": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "TCP Port used for TLS. EOS default is 2083.", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TLS" - }, - "timeout": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - }, - "retransmit": { - "type": "integer", - "minimum": 0, - "maximum": 100, - "title": "Retransmit" - }, - "key": { - "type": "string", - "description": "Encrypted key - only type 7 supported.\nWhen TLS is configured, `key` is ignored.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "host" - ] - }, - "title": "Hosts" - }, - "tls_ssl_profile": { - "type": "string", - "description": "Name of global TLS profile.", - "title": "TLS SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Radius Server" - }, - "radius_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "key": { - "type": "string", - "description": "Encrypted key.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Radius Servers" - }, - "redundancy": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "description": "Redundancy Protocol.", - "title": "Protocol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redundancy" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Role name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence number.", - "title": "Sequence" - }, - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Action" - }, - "mode": { - "type": "string", - "description": "\"config\", \"config-all\", \"exec\" or mode key as string.\n", - "title": "Mode" - }, - "command": { - "type": "string", - "description": "Command as string.", - "title": "Command" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Roles" - }, - "route_maps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Route-map Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "description": { - "type": "string", - "title": "Description" - }, - "match": { - "type": "array", - "description": "List of \"match\" statements.", - "items": { - "type": "string", - "description": "Match as string.\nExample: \"ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY\"\n" - }, - "title": "Match" - }, - "set": { - "type": "array", - "description": "List of \"set\" statements.", - "items": { - "type": "string", - "description": "Set as string.\nExample: \"origin incomplete\"\n" - }, - "title": "Set" - }, - "sub_route_map": { - "type": "string", - "description": "Name of Sub-Route-map.", - "title": "Sub Route Map" - }, - "continue": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "sequence_number": { - "type": "integer", - "title": "Sequence Number" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Continue" - } - }, - "required": [ - "type", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Route Maps" - }, - "router_adaptive_virtual_topology": { - "type": "object", - "properties": { - "topology_role": { - "description": "Role name.", - "type": "string", - "enum": [ - "edge", - "pathfinder", - "transit region", - "transit zone" - ], - "title": "Topology Role" - }, - "region": { - "type": "object", - "description": "Region name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Region" - }, - "zone": { - "type": "object", - "description": "Zone name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 10000, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Zone" - }, - "site": { - "type": "object", - "description": "Site name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 10000, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Site" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "AVT Name.", - "title": "Name" - }, - "load_balance_policy": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance Policy" - }, - "internet_exit_policy": { - "type": "string", - "description": "Name of the internet exit policy.", - "title": "Internet Exit Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "policies": { - "type": "array", - "description": "A sequence of application profiles mapped to some virtual topologies.\n\nWhen `wan_mode` is set to `autovpn`, the rules are indexed using 10* in the list.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "matches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "application_profile": { - "type": "string", - "description": "Application profile name.", - "title": "Application Profile" - }, - "avt_profile": { - "type": "string", - "description": "AVT Profile name.", - "title": "Avt Profile" - }, - "dscp": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "description": "Set DSCP for matched traffic.", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Set traffic-class for matched traffic.", - "title": "Traffic Class" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Matches" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "policy": { - "type": "string", - "description": "AVT Policy name.", - "title": "Policy" - }, - "profiles": { - "type": "array", - "description": "AVT profiles in this VRF.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "AVT profile name.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Unique ID for this AVT (per VRF).", - "minimum": 1, - "maximum": 254, - "title": "ID" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Adaptive Virtual Topology" - }, - "router_bfd": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "local_address": { - "type": "string", - "description": "Configure BFD local IP/IPv6 address.", - "title": "Local Address" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "multihop": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multihop" - }, - "session_snapshot_interval": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Interval in seconds.\nIntervals below 10 are considered \"dangerous\" on EOS and must have `session_snapshot_interval_dangerous` set to `true`.", - "title": "Session Snapshot Interval" - }, - "session_snapshot_interval_dangerous": { - "type": "boolean", - "title": "Session Snapshot Interval Dangerous" - }, - "sbfd": { - "type": "object", - "properties": { - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "protocols": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "initiator_interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Initiator Interval" - }, - "initiator_multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Initiator Multiplier" - }, - "initiator_measurement_round_trip": { - "type": "boolean", - "description": "Enable round-trip delay measurement.", - "title": "Initiator Measurement Round Trip" - }, - "reflector": { - "type": "object", - "properties": { - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "local_discriminator": { - "type": "string", - "description": "IPv4 address or 32 bit integer.", - "title": "Local Discriminator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reflector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SBFD" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router BFD" - }, - "router_bgp": { - "type": "object", - "properties": { - "as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "As" - }, - "as_notation": { - "title": "ASN Notation", - "type": "string", - "description": "BGP AS can be deplayed in the asplain <1-4294967295> or asdot notation \"<1-65535>.<0-65535>\". This flag indicates which mode is preferred - asplain is the default.", - "enum": [ - "asdot", - "asplain" - ] - }, - "router_id": { - "type": "string", - "description": "In IP address format A.B.C.D.", - "title": "Router ID" - }, - "distance": { - "type": "object", - "properties": { - "external_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "External Routes" - }, - "internal_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Internal Routes" - }, - "local_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Local Routes" - } - }, - "required": [ - "external_routes", - "internal_routes", - "local_routes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distance" - }, - "graceful_restart": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_time": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Number of seconds.", - "title": "Restart Time" - }, - "stalepath_time": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Number of seconds.", - "title": "Stalepath Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart" - }, - "graceful_restart_helper": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_time": { - "type": "integer", - "minimum": 1, - "maximum": 100000000, - "description": "Number of seconds\ngraceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", - "title": "Restart Time" - }, - "long_lived": { - "type": "boolean", - "description": "graceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", - "title": "Long Lived" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart Helper" - }, - "maximum_paths": { - "type": "object", - "properties": { - "paths": { - "type": "integer", - "minimum": 1, - "maximum": 600, - "title": "Paths" - }, - "ecmp": { - "type": "integer", - "minimum": 1, - "maximum": 600, - "title": "ECMP" - } - }, - "required": [ - "paths" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Maximum Paths" - }, - "updates": { - "type": "object", - "properties": { - "wait_for_convergence": { - "type": "boolean", - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", - "title": "Wait For Convergence" - }, - "wait_install": { - "type": "boolean", - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", - "title": "Wait Install" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Updates" - }, - "bgp_cluster_id": { - "type": "string", - "description": "IP Address A.B.C.D.", - "title": "BGP Cluster ID" - }, - "bgp_defaults": { - "type": "array", - "description": "BGP command as string.", - "items": { - "type": "string" - }, - "title": "BGP Defaults" - }, - "bgp": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "ipv4_unicast": { - "type": "boolean", - "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors (EOS default = True).", - "title": "IPv4 Unicast" - }, - "ipv4_unicast_transport_ipv6": { - "type": "boolean", - "description": "Default activation of IPv4 unicast address-family on all IPv6 neighbors (EOS default == False).", - "title": "IPv4 Unicast Transport IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - }, - "route_reflector_preserve_attributes": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Reflector Preserve Attributes" - }, - "bestpath": { - "type": "object", - "properties": { - "d_path": { - "type": "boolean", - "title": "D Path" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Bestpath" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "listen_ranges": { - "type": "array", - "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "peer_id_include_router_id": { - "type": "boolean", - "description": "Include router ID as part of peer filter.", - "title": "Peer ID Include Router ID" - }, - "peer_group": { - "type": "string", - "description": "Peer group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `peer_filter` or `remote_as` is required but mutually exclusive.\nIf both are defined, `peer_filter` takes precedence\n", - "title": "Peer Filter" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Listen Ranges" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "peer_group": { - "type": "string", - "title": "Peer Group" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "description": { - "type": "string", - "title": "Description" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "update_source": { - "type": "string", - "description": "Source Interface.", - "title": "Update Source" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "description": "Number of local ASNs allowed in a BGP update.", - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_group": { - "type": "string", - "default": "Peer-group name", - "title": "Peer Group" - }, - "description": { - "type": "string", - "title": "Description" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.", - "title": "Peer Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Neighbor Interfaces" - }, - "aggregate_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "advertise_only": { - "type": "boolean", - "title": "Advertise Only" - }, - "as_set": { - "type": "boolean", - "title": "As Set" - }, - "summary_only": { - "type": "boolean", - "title": "Summary Only" - }, - "attribute_map": { - "type": "string", - "description": "Route-map name.", - "title": "Attribute Map" - }, - "match_map": { - "type": "string", - "description": "Route-map name.", - "title": "Match Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Aggregate Addresses" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - }, - "vlan_aware_bundles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VLAN aware bundle name.", - "title": "Name" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "description": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Description" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - }, - "vlan": { - "type": "string", - "description": "VLAN range as string. Example \"100-200,300\".", - "title": "VLAN" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN-aware-bundle definition in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VLAN Aware Bundles" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", - "title": "EOS CLI" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vpws": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VPWS instance name.", - "title": "Name" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "route_targets": { - "type": "object", - "properties": { - "import_export": { - "type": "string", - "description": "Route Target.", - "title": "Import Export" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "mpls_control_word": { - "type": "boolean", - "title": "MPLS Control Word" - }, - "label_flow": { - "type": "boolean", - "title": "Label Flow" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "pseudowires": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Pseudowire name.", - "title": "Name" - }, - "id_local": { - "type": "integer", - "description": "Must match id_remote on other pe.", - "title": "ID Local" - }, - "id_remote": { - "type": "integer", - "description": "Must match id_local on other pe.", - "title": "ID Remote" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Pseudowires" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Vpws" - }, - "address_family_evpn": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "neighbor_default": { - "type": "object", - "properties": { - "encapsulation": { - "type": "string", - "enum": [ - "vxlan", - "mpls" - ], - "title": "Encapsulation" - }, - "next_hop_self_source_interface": { - "description": "Source interface name.", - "type": "string", - "title": "Next Hop Self Source Interface" - }, - "next_hop_self_received_evpn_routes": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "inter_domain": { - "type": "boolean", - "title": "Inter Domain" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop Self Received EVPN Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default" - }, - "next_hop_mpls_resolution_ribs": { - "type": "array", - "minItems": 1, - "maxItems": 3, - "description": "Specify the RIBs used to resolve MPLS next-hops. The order of this list determines the order of RIB lookups.", - "items": { - "type": "object", - "properties": { - "rib_type": { - "type": "string", - "enum": [ - "system-connected", - "tunnel-rib-colored", - "tunnel-rib" - ], - "description": "Type of RIB. For 'tunnel-rib', use 'rib_name' to specify the name of the Tunnel-RIB to use.", - "title": "Rib Type" - }, - "rib_name": { - "type": "string", - "description": "The name of the tunnel-rib to use when using 'tunnel-rib' type.", - "title": "Rib Name" - } - }, - "required": [ - "rib_type" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Next Hop MPLS Resolution Ribs" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - }, - "domain_remote": { - "type": "boolean", - "title": "Domain Remote" - }, - "encapsulation": { - "type": "string", - "enum": [ - "vxlan", - "mpls" - ], - "title": "Encapsulation" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "evpn_hostflap_detection": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "window": { - "type": "integer", - "description": "Time (in seconds) to detect a MAC duplication issue.", - "minimum": 0, - "maximum": 4294967295, - "title": "Window" - }, - "threshold": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "Minimum number of MAC moves that indicate a MAC Duplication issue.", - "title": "Threshold" - }, - "expiry_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "Time (in seconds) to purge a MAC duplication issue.", - "title": "Expiry Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Hostflap Detection" - }, - "next_hop": { - "type": "object", - "properties": { - "resolution_disabled": { - "type": "boolean", - "title": "Resolution Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - }, - "import_ethernet_segment_ip_mass_withdraw": { - "type": "boolean", - "title": "Import Ethernet Segment IP Mass Withdraw" - }, - "import_overlay_index_gateway": { - "type": "boolean", - "title": "Import Overlay Index Gateway" - }, - "export_ethernet_segment_ip_mass_withdraw": { - "type": "boolean", - "title": "Export Ethernet Segment IP Mass Withdraw" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "bgp_additional_paths": { - "type": "object", - "description": "BGP additional-paths commands.", - "properties": { - "receive": { - "type": "boolean", - "description": "Receive multiple paths.", - "title": "Receive" - }, - "send": { - "type": "object", - "description": "Send multiple paths.", - "properties": { - "any": { - "type": "boolean", - "description": "Any eligible path.", - "title": "Any" - }, - "backup": { - "type": "boolean", - "description": "Best path and installed backup path.", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "description": "All paths in best path ECMP group.", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP Additional Paths" - }, - "layer_2_fec_in_place_update": { - "type": "object", - "description": "BGP layer-2 in-place FEC operation.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "description": "In-place FEC update tracking timeout in seconds.", - "minimum": 0, - "maximum": 300, - "title": "Timeout" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Layer 2 Fec In Place Update" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family EVPN" - }, - "address_family_rtc": { - "type": "object", - "properties": { - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "default_route_target": { - "type": "object", - "properties": { - "only": { - "type": "boolean", - "title": "Only" - }, - "encoding_origin_as_omit": { - "type": "string", - "title": "Encoding Origin As Omit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Rtc" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "type": "string", - "title": "Prefix" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "originate": { - "type": "boolean", - "title": "Originate" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv6_originate": { - "type": "boolean", - "title": "Address Family IPv6 Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Prefix-list name.", - "title": "Prefix List Out" - }, - "default_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv4_multicast": { - "type": "object", - "properties": { - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Multicast" - }, - "address_family_ipv4_sr_te": { - "type": "object", - "properties": { - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Sr Te" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "type": "string", - "title": "Prefix" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly used if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv6_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Multicast" - }, - "address_family_ipv6_sr_te": { - "type": "object", - "properties": { - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Sr Te" - }, - "address_family_link_state": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "path_selection": { - "type": "object", - "properties": { - "roles": { - "type": "object", - "properties": { - "producer": { - "type": "boolean", - "title": "Producer" - }, - "consumer": { - "type": "boolean", - "title": "Consumer" - }, - "propagator": { - "type": "boolean", - "title": "Propagator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Roles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Path Selection" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Link State" - }, - "address_family_flow_spec_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv4" - }, - "address_family_flow_spec_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv6" - }, - "address_family_path_selection": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Path Selection" - }, - "address_family_vpn_ipv4": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_default_encapsulation_mpls_next_hop_self": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default Encapsulation MPLS Next Hop Self" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family VPN IPv4" - }, - "address_family_vpn_ipv6": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_default_encapsulation_mpls_next_hop_self": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default Encapsulation MPLS Next Hop Self" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family VPN IPv6" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - }, - "evpn_multicast": { - "type": "boolean", - "title": "EVPN Multicast" - }, - "evpn_multicast_address_family": { - "type": "object", - "description": "Enable per-AF EVPN multicast settings.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "transit": { - "type": "boolean", - "description": "Enable EVPN multicast transit mode.", - "title": "Transit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Multicast Address Family" - }, - "evpn_multicast_gateway_dr_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "description": "DR election algorithms:\n hrw: Default selection based on highest random weight.\n modulus: Selection based on VLAN ID modulo number of candidates.\n preference: Selection based on a configured preference value.", - "enum": [ - "hrw", - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "description": "Required when `algorithm` is `preference`.", - "minimum": 0, - "maximum": 65535, - "title": "Preference Value" - } - }, - "required": [ - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Multicast Gateway DR Election" - }, - "default_route_exports": { - "type": "array", - "description": "Enable default-originate per VRF/address-family.", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "enum": [ - "evpn", - "vpn-ipv4", - "vpn-ipv6" - ], - "title": "Address Family" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Default Route Exports" - }, - "route_targets": { - "type": "object", - "properties": { - "import": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "route_targets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Route Targets" - }, - "route_map": { - "type": "string", - "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "RCF" - }, - "vpn_route_filter_rcf": { - "type": "string", - "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", - "title": "VPN Route Filter RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "route_targets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Route Targets" - }, - "route_map": { - "type": "string", - "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "RCF" - }, - "vpn_route_filter_rcf": { - "type": "string", - "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", - "title": "VPN Route Filter RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Export" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "router_id": { - "description": "in IP address format A.B.C.D.", - "type": "string", - "title": "Router ID" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "updates": { - "type": "object", - "properties": { - "wait_for_convergence": { - "type": "boolean", - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", - "title": "Wait For Convergence" - }, - "wait_install": { - "type": "boolean", - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", - "title": "Wait Install" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Updates" - }, - "listen_ranges": { - "type": "array", - "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "peer_id_include_router_id": { - "type": "boolean", - "description": "Include router ID as part of peer filter.", - "title": "Peer ID Include Router ID" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `peer_filter`` or `remote_as` is required but mutually exclusive.\nIf both are defined, peer_filter takes precedence.\n", - "title": "Peer Filter" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Listen Ranges" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "description": { - "type": "string", - "title": "Description" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "description": "Number of local ASNs allowed in a BGP update.", - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "update_source": { - "type": "string", - "title": "Update Source" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_in or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_in instead.", - "deprecated": true, - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_out or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_out instead.", - "deprecated": true, - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.", - "title": "Peer Filter" - }, - "description": { - "type": "string", - "title": "Description" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Neighbor Interfaces" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - }, - "aggregate_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "advertise_only": { - "type": "boolean", - "title": "Advertise Only" - }, - "as_set": { - "type": "boolean", - "title": "As Set" - }, - "summary_only": { - "type": "boolean", - "title": "Summary Only" - }, - "attribute_map": { - "type": "string", - "title": "Attribute Map" - }, - "match_map": { - "type": "string", - "title": "Match Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Aggregate Addresses" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "originate": { - "type": "boolean", - "title": "Originate" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dhcp", - "dynamic", - "isis", - "ospfv3", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv4_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A.B.C.D/E\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Multicast" - }, - "address_family_ipv6_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Multicast" - }, - "address_family_flow_spec_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv4" - }, - "address_family_flow_spec_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv6" - }, - "address_families": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6_originate": { - "type": "boolean", - "title": "Address Family IPv6 Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Address Families" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "session_trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of session tracker.", - "title": "Name" - }, - "recovery_delay": { - "type": "integer", - "description": "Recovery delay in seconds.", - "minimum": 1, - "maximum": 3600, - "title": "Recovery Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Session Trackers" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router BGP" - }, - "router_general": { - "type": "object", - "title": "Router General configuration", - "properties": { - "router_id": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "description": "IPv4 Address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "IPv6 Address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ID" - }, - "nexthop_fast_failover": { - "type": "boolean", - "default": false, - "title": "Nexthop Fast Failover" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Destination-VRF.", - "title": "Name" - }, - "leak_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_vrf": { - "type": "string", - "title": "Source VRF" - }, - "subscribe_policy": { - "type": "string", - "description": "Route-Map Policy.", - "title": "Subscribe Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Leak Routes" - }, - "routes": { - "type": "object", - "properties": { - "dynamic_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Dynamic Prefix List Name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "control_functions": { - "type": "object", - "description": "Routing control functions (RCF) used to filter and update routes from a peer or during redistributions.\nWarning:\nThis configuration cannot be pushed with `eos_config_deploy_eapi`, because of limitations in `arista.eos` and `ansible.netcommon` plugins.\nThe configuration can be pushed via CloudVision with `eos_config_deploy_cvp` or `cv_deploy`.", - "properties": { - "code_units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the code unit.", - "title": "Name" - }, - "content": { - "type": "string", - "description": "Content of route control function.\ne.g.\nfunction ACCEPT_ALL() {\n return true;\n }\nEOF", - "title": "Content" - } - }, - "required": [ - "content", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Code Units" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Functions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_igmp": { - "type": "object", - "title": "Router IGMP Configuration", - "properties": { - "host_proxy_match_mroute": { - "type": "string", - "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", - "enum": [ - "all", - "iif" - ], - "title": "Host Proxy Match Mroute" - }, - "ssm_aware": { - "type": "boolean", - "title": "Ssm Aware" - }, - "vrfs": { - "type": "array", - "description": "Configure IGMP in a VRF.\nVRF 'default' is not supported in EOS, please see keys directly under 'router_igmp'.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "host_proxy_match_mroute": { - "type": "string", - "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", - "enum": [ - "all", - "iif" - ], - "title": "Host Proxy Match Mroute" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_internet_exit": { - "type": "object", - "description": "Internet-exit feature to configure internet bound service for virtual topologies.", - "properties": { - "policies": { - "type": "array", - "description": "Internet-exit policy represent a policy which can be attached to a virtual topology profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "exit_groups": { - "type": "array", - "description": "The exit groups that are configured under a policy are strictly ordered, meaning an exit group appearing first has more priority than the exit group that follows it.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Exit Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "exit_groups": { - "type": "array", - "description": "Exit groups represent a group of exit options (connections).\nTraffic flows are load balanced in a round robin fashion across all the members (exits) of the exit-group.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "fib_default": { - "type": "boolean", - "description": "Fib default exit indicates that the flows that select this exit will follow the default route available in the VRF of the flow.", - "title": "Fib Default" - }, - "local_connections": { - "type": "array", - "description": "Local connections refer to connections configured under the `router_service_insertion`.\nThe service-insertion module reports the health of the connection and the exit will qualify for use only when it is healthy.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Local Connections" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exit Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Internet Exit" - }, - "router_isis": { - "type": "object", - "properties": { - "instance": { - "type": "string", - "description": "ISIS Instance Name.", - "title": "Instance" - }, - "net": { - "type": "string", - "description": "CLNS Address like \"49.0001.0001.0000.0001.00\".", - "title": "Net" - }, - "router_id": { - "type": "string", - "description": "IPv4 Address.", - "title": "Router ID" - }, - "is_type": { - "title": "IS Type", - "type": "string", - "enum": [ - "level-1", - "level-1-2", - "level-2" - ] - }, - "log_adjacency_changes": { - "type": "boolean", - "title": "Log Adjacency Changes" - }, - "mpls_ldp_sync_default": { - "type": "boolean", - "title": "MPLS LDP Sync Default" - }, - "timers": { - "type": "object", - "properties": { - "local_convergence": { - "type": "object", - "properties": { - "protected_prefixes": { - "type": "boolean", - "title": "Protected Prefixes" - }, - "delay": { - "type": "integer", - "default": 10000, - "description": "Delay in milliseconds.", - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Convergence" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "set_overload_bit": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "on_startup": { - "type": "object", - "properties": { - "delay": { - "type": "integer", - "description": "Number of seconds.", - "title": "Delay" - }, - "wait_for_bgp": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "description": "Number of seconds.", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wait For BGP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "On Startup" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set Overload Bit" - }, - "authentication": { - "type": "object", - "properties": { - "both": { - "type": "object", - "description": "Authentication settings for level-1 and level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Both" - }, - "level_1": { - "type": "object", - "description": "Authentication settings for level-1. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Level 1" - }, - "level_2": { - "type": "object", - "description": "Authentication settings for level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Level 2" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication" - }, - "advertise": { - "type": "object", - "properties": { - "passive_only": { - "type": "boolean", - "title": "Passive Only" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertise" - }, - "address_family": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "ipv4 unicast", - "ipv6 unicast" - ], - "description": "Address Family.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4.enabled or address_family_ipv6.enabled instead.", - "deprecated": true - }, - "title": "Address Family" - }, - "isis_af_defaults": { - "type": "array", - "items": { - "type": "string", - "description": "EOS CLI rendered under the address families.\nExample \"maximum-paths 64\"\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4/address_family_ipv6 instead.", - "deprecated": true - }, - "title": "ISIS AF Defaults" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "bgp", - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external" - ], - "description": "ospf_route_type is required with source_protocols 'ospf' and 'ospfv3'.", - "title": "OSPF Route Type" - } - }, - "required": [ - "source_protocol" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Redistribute Routes" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "bfd_all_interfaces": { - "type": "boolean", - "description": "Enable BFD on all interfaces.", - "title": "BFD All Interfaces" - }, - "fast_reroute_ti_lfa": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "link-protection", - "node-protection" - ], - "title": "Mode" - }, - "level": { - "type": "string", - "enum": [ - "level-1", - "level-2" - ], - "title": "Level" - }, - "srlg": { - "type": "object", - "description": "Shared Risk Link Group.", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "strict": { - "type": "boolean", - "title": "Strict" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SRLG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fast Reroute TI LFA" - }, - "tunnel_source_labeled_unicast": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "Route Control Function.", - "title": "RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tunnel Source Labeled Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "bfd_all_interfaces": { - "type": "boolean", - "description": "Enable BFD on all interfaces.", - "title": "BFD All Interfaces" - }, - "fast_reroute_ti_lfa": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "link-protection", - "node-protection" - ], - "title": "Mode" - }, - "level": { - "type": "string", - "enum": [ - "level-1", - "level-2" - ], - "description": "Optional, default is to protect all levels.", - "title": "Level" - }, - "srlg": { - "type": "object", - "description": "Shared Risk Link Group.", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "strict": { - "type": "boolean", - "title": "Strict" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SRLG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fast Reroute TI LFA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "segment_routing_mpls": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "router_id": { - "type": "string", - "title": "Router ID" - }, - "prefix_segments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "title": "Prefix" - }, - "index": { - "type": "integer", - "title": "Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix Segments" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Segment Routing MPLS" - }, - "spf_interval": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Maximum interval between two SPFs in seconds or milliseconds.\nRange in seconds: <1-300>\nRange in milliseconds: <1-300000>", - "title": "Interval" - }, - "interval_unit": { - "type": "string", - "enum": [ - "seconds", - "milliseconds" - ], - "description": "If interval unit is not defined EOS takes `seconds` by default.", - "title": "Interval Unit" - }, - "wait_interval": { - "type": "integer", - "minimum": 1, - "maximum": 300000, - "description": "Initial wait interval for SPF in milliseconds.", - "title": "Wait Interval" - }, - "hold_interval": { - "type": "integer", - "minimum": 1, - "maximum": 300000, - "description": "Hold interval between the first and second SPF runs in milliseconds.", - "title": "Hold Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SPF Interval" - }, - "graceful_restart": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_hold_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Number of seconds.", - "title": "Restart Hold Time" - }, - "t2": { - "type": "object", - "properties": { - "level_1_wait_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Level-1 LSP database sync wait time in seconds.", - "title": "Level 1 Wait Time" - }, - "level_2_wait_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Level-2 LSP database sync wait time in seconds.", - "title": "Level 2 Wait Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "T2" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the router isis in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "required": [ - "instance" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ISIS" - }, - "router_l2_vpn": { - "type": "object", - "properties": { - "arp_learning_bridged": { - "type": "boolean", - "title": "ARP Learning Bridged" - }, - "arp_proxy": { - "type": "object", - "properties": { - "prefix_list": { - "type": "string", - "description": "Prefix-list name. ARP Proxying is disabled for IPv4 addresses defined in the prefix-list.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ARP Proxy" - }, - "arp_selective_install": { - "type": "boolean", - "title": "ARP Selective Install" - }, - "nd_learning_bridged": { - "type": "boolean", - "title": "ND Learning Bridged" - }, - "nd_proxy": { - "type": "object", - "properties": { - "prefix_list": { - "type": "string", - "description": "Prefix-list name. Neighbor Discovery Proxying is disabled for IPv6 addresses defined in the prefix-list.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ND Proxy" - }, - "nd_rs_flooding_disabled": { - "type": "boolean", - "title": "ND RS Flooding Disabled" - }, - "virtual_router_nd_ra_flooding_disabled": { - "type": "boolean", - "title": "Virtual Router ND RA Flooding Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router L2 VPN" - }, - "router_msdp": { - "type": "object", - "properties": { - "originator_id_local_interface": { - "type": "string", - "description": "Interface to use for originator ID.", - "title": "Originator ID Local Interface" - }, - "rejected_limit": { - "type": "integer", - "description": "Maximum number of rejected SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Rejected Limit" - }, - "forward_register_packets": { - "type": "boolean", - "title": "Forward Register Packets" - }, - "connection_retry_interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Connection Retry Interval" - }, - "group_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "type": "string", - "description": "Source address prefix.", - "title": "Source Prefix" - }, - "limit": { - "type": "integer", - "description": "Limit for SAs matching the source address prefix.", - "minimum": 0, - "maximum": 40000, - "title": "Limit" - } - }, - "required": [ - "limit", - "source_prefix" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Group Limits" - }, - "peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "Peer IP Address.", - "title": "IPv4 Address" - }, - "default_peer": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "prefix_list": { - "type": "string", - "description": "Prefix list to filter source of SA messages.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Peer" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "description": { - "type": "string", - "title": "Description" - }, - "disabled": { - "type": "boolean", - "description": "Disable the MSDP peer.", - "title": "Disabled" - }, - "sa_limit": { - "type": "integer", - "description": "Maximum number of SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Sa Limit" - }, - "mesh_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Mesh group name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Mesh Groups" - }, - "keepalive": { - "type": "object", - "properties": { - "keepalive_timer": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Keepalive Timer" - }, - "hold_timer": { - "type": "integer", - "description": "Must be greater than keepalive timer.", - "minimum": 1, - "maximum": 65535, - "title": "Hold Timer" - } - }, - "required": [ - "keepalive_timer", - "hold_timer" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - }, - "sa_filter": { - "type": "object", - "properties": { - "in_list": { - "type": "string", - "description": "ACL to filter inbound SA messages.", - "title": "In List" - }, - "out_list": { - "type": "string", - "description": "ACL to filter outbound SA messages.", - "title": "Out List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_address" - ] - }, - "title": "Peers" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "originator_id_local_interface": { - "type": "string", - "description": "Interface to use for originator ID.", - "title": "Originator ID Local Interface" - }, - "rejected_limit": { - "type": "integer", - "description": "Maximum number of rejected SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Rejected Limit" - }, - "forward_register_packets": { - "type": "boolean", - "title": "Forward Register Packets" - }, - "connection_retry_interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Connection Retry Interval" - }, - "group_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "type": "string", - "description": "Source address prefix.", - "title": "Source Prefix" - }, - "limit": { - "type": "integer", - "description": "Limit for SAs matching the source address prefix.", - "minimum": 0, - "maximum": 40000, - "title": "Limit" - } - }, - "required": [ - "limit", - "source_prefix" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Group Limits" - }, - "peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "Peer IP Address.", - "title": "IPv4 Address" - }, - "default_peer": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "prefix_list": { - "type": "string", - "description": "Prefix list to filter source of SA messages.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Peer" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "description": { - "type": "string", - "title": "Description" - }, - "disabled": { - "type": "boolean", - "description": "Disable the MSDP peer.", - "title": "Disabled" - }, - "sa_limit": { - "type": "integer", - "description": "Maximum number of SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Sa Limit" - }, - "mesh_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Mesh group name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Mesh Groups" - }, - "keepalive": { - "type": "object", - "properties": { - "keepalive_timer": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Keepalive Timer" - }, - "hold_timer": { - "type": "integer", - "description": "Must be greater than keepalive timer.", - "minimum": 1, - "maximum": 65535, - "title": "Hold Timer" - } - }, - "required": [ - "keepalive_timer", - "hold_timer" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - }, - "sa_filter": { - "type": "object", - "properties": { - "in_list": { - "type": "string", - "description": "ACL to filter inbound SA messages.", - "title": "In List" - }, - "out_list": { - "type": "string", - "description": "ACL to filter outbound SA messages.", - "title": "Out List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_address" - ] - }, - "title": "Peers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Msdp" - }, - "router_multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "activity_polling_interval": { - "type": "integer", - "minimum": 1, - "maximum": 60, - "description": "MFIB entry activity polling interval.", - "title": "Activity Polling Interval" - }, - "counters": { - "type": "object", - "properties": { - "rate_period_decay": { - "description": "Rate in seconds.", - "type": "integer", - "minimum": 0, - "maximum": 600, - "title": "Rate Period Decay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Counters" - }, - "routing": { - "type": "boolean", - "title": "Routing" - }, - "multipath": { - "type": "string", - "enum": [ - "none", - "deterministic", - "deterministic color", - "deterministic router-id" - ], - "title": "Multipath" - }, - "software_forwarding": { - "type": "string", - "enum": [ - "kernel", - "sfe" - ], - "title": "Software Forwarding" - }, - "rpf": { - "type": "object", - "properties": { - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "description": "Source address A.B.C.D or Source prefix A.B.C.D/E.", - "type": "string", - "title": "Source Prefix" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nexthop": { - "description": "Next-hop IP address or interface name.", - "type": "string", - "title": "Nexthop" - }, - "distance": { - "description": "Administrative distance for this route.", - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "nexthop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Destinations" - } - }, - "required": [ - "source_prefix", - "destinations" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rpf" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "activity_polling_interval": { - "type": "integer", - "minimum": 1, - "maximum": 60, - "description": "MFIB entry activity polling interval.", - "title": "Activity Polling Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "ipv4": { - "type": "object", - "properties": { - "routing": { - "type": "boolean", - "title": "Routing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Multicast" - }, - "router_ospf": { - "type": "object", - "title": "Router OSPF Configuration", - "properties": { - "process_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "OSPF Process ID.", - "title": "ID" - }, - "vrf": { - "type": "string", - "description": "VRF Name for OSPF Process.", - "title": "VRF" - }, - "passive_interface_default": { - "type": "boolean", - "title": "Passive Interface Default" - }, - "router_id": { - "type": "string", - "description": "IPv4 Address.", - "title": "Router ID" - }, - "distance": { - "type": "object", - "properties": { - "external": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "External" - }, - "inter_area": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Inter Area" - }, - "intra_area": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Intra Area" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distance" - }, - "log_adjacency_changes_detail": { - "type": "boolean", - "title": "Log Adjacency Changes Detail" - }, - "network_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_prefix": { - "type": "string", - "title": "IPv4 Prefix" - }, - "area": { - "type": "string", - "title": "Area" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_prefix" - ] - }, - "title": "Network Prefixes" - }, - "bfd_enable": { - "type": "boolean", - "title": "BFD Enable" - }, - "bfd_adjacency_state_any": { - "type": "boolean", - "title": "BFD Adjacency State Any" - }, - "no_passive_interfaces": { - "type": "array", - "items": { - "type": "string", - "description": "Interface Name." - }, - "title": "No Passive Interfaces" - }, - "distribute_list_in": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distribute List In" - }, - "max_lsa": { - "type": "integer", - "title": "Max LSA" - }, - "timers": { - "type": "object", - "properties": { - "lsa": { - "type": "object", - "properties": { - "rx_min_interval": { - "type": "integer", - "description": "Min interval in msecs between accepting the same LSA.", - "minimum": 0, - "maximum": 600000, - "title": "RX Min Interval" - }, - "tx_delay": { - "type": "object", - "properties": { - "initial": { - "type": "integer", - "description": "Delay to generate first occurrence of LSA in msecs.", - "minimum": 0, - "maximum": 600000, - "title": "Initial" - }, - "min": { - "type": "integer", - "description": "Min delay between originating the same LSA in msecs.", - "minimum": 1, - "maximum": 600000, - "title": "Min" - }, - "max": { - "type": "integer", - "description": "1-600000 Maximum delay between originating the same LSA in msec.", - "minimum": 1, - "maximum": 600000, - "title": "Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TX Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LSA" - }, - "spf_delay": { - "type": "object", - "properties": { - "initial": { - "type": "integer", - "description": "Initial SPF schedule delay in msecs.", - "minimum": 0, - "maximum": 600000, - "title": "Initial" - }, - "min": { - "type": "integer", - "description": "Min Hold time between two SPFs in msecs.", - "minimum": 0, - "maximum": 65535000, - "title": "Min" - }, - "max": { - "type": "integer", - "description": "Max wait time between two SPFs in msecs.", - "minimum": 0, - "maximum": 65535000, - "title": "Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SPF Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "default_information_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "metric": { - "type": "integer", - "description": "Metric for default route.", - "minimum": 1, - "maximum": 65535, - "title": "Metric" - }, - "metric_type": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "description": "OSPF metric type for default route.", - "title": "Metric Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Information Originate" - }, - "summary_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "Summary Prefix Address.", - "title": "Prefix" - }, - "tag": { - "type": "integer", - "title": "Tag" - }, - "attribute_map": { - "type": "string", - "title": "Attribute Map" - }, - "not_advertise": { - "type": "boolean", - "title": "Not Advertise" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Summary Addresses" - }, - "redistribute": { - "type": "object", - "properties": { - "static": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Static" - }, - "connected": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connected" - }, - "bgp": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redistribute" - }, - "auto_cost_reference_bandwidth": { - "type": "integer", - "description": "Bandwidth in mbps.", - "title": "Auto Cost Reference Bandwidth" - }, - "areas": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "filter": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 Prefix." - }, - "title": "Networks" - }, - "prefix_list": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Filter" - }, - "type": { - "type": "string", - "enum": [ - "normal", - "stub", - "nssa" - ], - "default": "normal", - "title": "Type" - }, - "no_summary": { - "type": "boolean", - "title": "No Summary" - }, - "nssa_only": { - "type": "boolean", - "title": "Nssa Only" - }, - "default_information_originate": { - "type": "object", - "properties": { - "metric": { - "type": "integer", - "description": "Metric for default route.", - "minimum": 1, - "maximum": 65535, - "title": "Metric" - }, - "metric_type": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "description": "OSPF metric type for default route.", - "title": "Metric Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Information Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Areas" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "max_metric": { - "type": "object", - "properties": { - "router_lsa": { - "type": "object", - "properties": { - "external_lsa": { - "type": "object", - "properties": { - "override_metric": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "title": "Override Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "External LSA" - }, - "include_stub": { - "type": "boolean", - "title": "Include Stub" - }, - "on_startup": { - "type": "string", - "description": "\"wait-for-bgp\" or Integer 5-86400.\nExample: \"wait-for-bgp\" Or \"222\"\n", - "title": "On Startup" - }, - "summary_lsa": { - "type": "object", - "properties": { - "override_metric": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "title": "Override Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Summary LSA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router LSA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Max Metric" - }, - "mpls_ldp_sync_default": { - "type": "boolean", - "title": "MPLS LDP Sync Default" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router OSPF process ID in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Process IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_path_selection": { - "type": "object", - "description": "Dynamic path selection configuration.", - "properties": { - "peer_dynamic_source": { - "type": "string", - "enum": [ - "stun" - ], - "description": "Source of dynamic peer discovery.", - "title": "Peer Dynamic Source" - }, - "path_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path group name.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Path group ID.", - "minimum": 1, - "maximum": 65535, - "title": "ID" - }, - "ipsec_profile": { - "type": "string", - "description": "IPSec profile for the path group.", - "title": "Ipsec Profile" - }, - "flow_assignment": { - "type": "string", - "enum": [ - "lan" - ], - "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", - "title": "Flow Assignment" - }, - "local_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Local interface name.", - "pattern": "^Ethernet\\d+(/\\d+)*(\\.\\d+)?$", - "title": "Name" - }, - "public_address": { - "type": "string", - "description": "Public IP assigned by NAT.", - "title": "Public Address" - }, - "stun": { - "type": "object", - "properties": { - "server_profiles": { - "type": "array", - "minItems": 1, - "maxItems": 12, - "description": "STUN server-profile names.", - "items": { - "type": "string" - }, - "title": "Server Profiles" - } - }, - "required": [ - "server_profiles" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Interfaces" - }, - "local_ips": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "public_address": { - "type": "string", - "description": "Public IP assigned by NAT.", - "title": "Public Address" - }, - "stun": { - "type": "object", - "properties": { - "server_profiles": { - "type": "array", - "minItems": 1, - "maxItems": 12, - "description": "STUN server-profile names.", - "items": { - "type": "string" - }, - "title": "Server Profiles" - } - }, - "required": [ - "server_profiles" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Local Ips" - }, - "dynamic_peers": { - "type": "object", - "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable `peer dynamic`.", - "title": "Enabled" - }, - "ip_local": { - "type": "boolean", - "description": "Prefer local IP address.", - "title": "IP Local" - }, - "ipsec": { - "type": "boolean", - "description": "IPsec configuration for dynamic peers.", - "title": "Ipsec" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic Peers" - }, - "static_peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "router_ip": { - "type": "string", - "description": "Peer router IP.", - "title": "Router IP" - }, - "name": { - "type": "string", - "description": "Name of the site.", - "title": "Name" - }, - "ipv4_addresses": { - "type": "array", - "description": "Static IPv4 addresses.", - "items": { - "type": "string" - }, - "title": "IPv4 Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "router_ip" - ] - }, - "title": "Static Peers" - }, - "keepalive": { - "type": "object", - "properties": { - "auto": { - "type": "boolean", - "description": "Enable adaptive keepalive and feedback interval.", - "default": false, - "title": "Auto" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "minimum": 50, - "maximum": 60000, - "title": "Interval" - }, - "failure_threshold": { - "type": "integer", - "minimum": 2, - "maximum": 100, - "description": "Failure threshold in number of intervals. Required when `interval` is set.", - "title": "Failure Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Path Groups" - }, - "load_balance_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Load-balance policy name.", - "title": "Name" - }, - "lowest_hop_count": { - "type": "boolean", - "description": "Prefer paths with lowest hop-count.", - "title": "Lowest Hop Count" - }, - "jitter": { - "type": "integer", - "description": "Jitter requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Jitter" - }, - "latency": { - "type": "integer", - "description": "One way delay requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Latency" - }, - "loss_rate": { - "type": "string", - "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "title": "Loss Rate" - }, - "path_groups": { - "type": "array", - "description": "List of path-groups to use for this load balance policy.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path-group name.", - "title": "Name" - }, - "priority": { - "type": "integer", - "description": "Priority for this path-group.\nThe EOS default value is 1.", - "minimum": 1, - "maximum": 65535, - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Path Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Load Balance Policies" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "DPS policy name.", - "title": "Name" - }, - "default_match": { - "type": "object", - "properties": { - "load_balance": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Match" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "Rule ID.", - "minimum": 1, - "maximum": 255, - "title": "ID" - }, - "application_profile": { - "type": "string", - "title": "Application Profile" - }, - "load_balance": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance" - } - }, - "required": [ - "application_profile", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Rules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "path_selection_policy": { - "type": "string", - "description": "DPS policy name to use for this VRF.", - "title": "Path Selection Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4_segment_size": { - "type": "string", - "description": "Segment Size for IPv4.\nCan be an integer in the range 64-65515 or \"auto\".\n\"auto\" will enable auto-discovery which clamps the TCP MSS value to the minimum of all the direct paths\nand multi-hop path MTU towards a remote VTEP (minus 40bytes to account for IP + TCP header).", - "title": "IPv4 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "ingress" - ], - "default": "ingress", - "description": "Enforce on packets through DPS tunnel for a specific direction.\nOnly 'ingress' direction is supported.", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Path Selection" - }, - "router_pim_sparse_mode": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "bfd": { - "type": "boolean", - "description": "Enable/Disable BFD.", - "title": "BFD" - }, - "ssm_range": { - "type": "string", - "description": "IPv4 Prefix associated with SSM.", - "title": "Ssm Range" - }, - "rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "RP Address.", - "title": "Address" - }, - "groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Groups" - }, - "access_lists": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Access Lists" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority" - }, - "hashmask": { - "type": "integer", - "minimum": 0, - "maximum": 32, - "title": "Hashmask" - }, - "override": { - "type": "boolean", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "RP Addresses" - }, - "anycast_rps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Anycast RP Address.", - "title": "Address" - }, - "other_anycast_rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Other Anycast RP Address.", - "title": "Address" - }, - "register_count": { - "type": "integer", - "title": "Register Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "Other Anycast RP Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "Anycast RPs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "ipv4": { - "type": "object", - "properties": { - "bfd": { - "type": "boolean", - "description": "Enable/Disable BFD.", - "title": "BFD" - }, - "rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "RP Address.", - "title": "Address" - }, - "groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Groups" - }, - "access_lists": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Access Lists" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority" - }, - "hashmask": { - "type": "integer", - "minimum": 0, - "maximum": 32, - "title": "Hashmask" - }, - "override": { - "type": "boolean", - "title": "Override" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "RP Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router PIM Sparse Mode" - }, - "router_segment_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "policies": { - "type": "array", - "description": "Customised application policies.\nUsing the Application Traffic Recognition L4 profiles, custom policies can be defined. The built-in application 'app-match-all' can be used to match any packets.\nNote that this is stateless, so both the source and destination flows need to be considered.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "minimum": 1, - "maximum": 1023, - "title": "Sequence" - }, - "application": { - "type": "string", - "description": "The name of the application.", - "title": "Application" - }, - "action": { - "type": "string", - "description": "The action to take - note that platform support for the redirect action is limited. The \"redirect\" action also requires the 'next_hop' to be configured.", - "enum": [ - "forward", - "drop", - "redirect" - ], - "title": "Action" - }, - "log": { - "type": "boolean", - "description": "Enable logging - note that platform support is limited.", - "title": "Log" - }, - "stateless": { - "type": "boolean", - "description": "Take action, regardless of state. Should be set to 'true' for MSS-G.", - "default": true, - "title": "Stateless" - }, - "next_hop": { - "type": "string", - "description": "When the action is 'redirect', this indicates the IPv4 next hop to redirect to.", - "title": "Next Hop" - } - }, - "required": [ - "application", - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "description": "The name of the VRF that the segments and policies are defined in.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "segments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Segment name.", - "title": "Name" - }, - "definition": { - "type": "object", - "properties": { - "interfaces": { - "type": "array", - "description": "The names of the source interface e.g. Port-Channel1 - note that platform support is limited.", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "match_lists": { - "type": "array", - "description": "The set of lists that define the segment. These can be a mix of IPv4 and IPv6 prefix or match lists.", - "maxItems": 2, - "minItems": 1, - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "description": "Indicate which address-family the match list belongs to e.g. ipv4 or ipv6.", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Address Family" - }, - "covered_prefix_list": { - "type": "string", - "description": "The name of the prefix-list. You can have a maximum of one per address-family. Mutually exclusive to the use of match_list. If both are configured prefix takes precedence.", - "title": "Covered Prefix List" - }, - "prefix": { - "type": "string", - "description": "The name of the match-list. You can have a maximum of one per address-family. Mutually exclusive to the use of covered_prefix_list. If both are configured prefix takes precedence.", - "title": "Prefix" - } - }, - "required": [ - "address_family" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Match Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Definition" - }, - "policies": { - "type": "array", - "description": "The policies controlling traffic into the segment.", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "The name of the source segment or 'forwarding-segments' for all segments.", - "title": "From" - }, - "policy": { - "type": "string", - "description": "The name of the policy to apply. The built-in policies are 'policy-forward-all' and 'policy-drop-all'.", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "from" - ] - }, - "title": "Policies" - }, - "fallback_policy": { - "type": "string", - "description": "Only supported on the R3 series platforms, this allows a per-segment default policy to be specified by name.", - "title": "Fallback Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Segments" - } - }, - "required": [ - "segments", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Segment Security" - }, - "router_service_insertion": { - "type": "object", - "description": "Configure network services inserted to data forwarding.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "connections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Connection name.", - "title": "Name" - }, - "ethernet_interface": { - "type": "object", - "description": "Outgoing physical interface or subinterface to use for the connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", - "properties": { - "name": { - "type": "string", - "description": "e.g. Ethernet2 or Ethernet2/2.2", - "title": "Name" - }, - "next_hop": { - "type": "string", - "description": "Next-hop IPv4 address (without mask).", - "title": "Next Hop" - } - }, - "required": [ - "name", - "next_hop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Interface" - }, - "tunnel_interface": { - "type": "object", - "description": "Outgoing tunnel interface(s) to use for this connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", - "properties": { - "primary": { - "type": "string", - "description": "e.g. Tunnel2", - "title": "Primary" - }, - "secondary": { - "type": "string", - "description": "e.g. Tunnel3", - "title": "Secondary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tunnel Interface" - }, - "monitor_connectivity_host": { - "type": "string", - "description": "Name of the host defined under `monitor_connectivity.hosts` used to derive the health of the connection.", - "title": "Monitor Connectivity Host" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Connections" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Service Insertion" - }, - "router_traffic_engineering": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "router_id": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ID" - }, - "segment_routing": { - "type": "object", - "properties": { - "colored_tunnel_rib": { - "type": "boolean", - "title": "Colored Tunnel Rib" - }, - "policy_endpoints": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "IPv4 or IPv6 address.", - "title": "Address" - }, - "colors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Value" - }, - "binding_sid": { - "type": "integer", - "title": "Binding Sid" - }, - "description": { - "type": "string", - "title": "Description" - }, - "name": { - "type": "string", - "title": "Name" - }, - "sbfd_remote_discriminator": { - "type": "string", - "description": "IPv4 address or 32 bit integer.", - "title": "SBFD Remote Discriminator" - }, - "path_group": { - "type": "array", - "items": { - "type": "object", - "properties": { - "preference": { - "type": "integer", - "title": "Preference" - }, - "explicit_null": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "ipv4 ipv6", - "none" - ], - "title": "Explicit Null" - }, - "segment_list": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label_stack": { - "type": "string", - "description": "Label Stack as string.\nExample: \"100 2000 30\"\n", - "title": "Label Stack" - }, - "weight": { - "type": "integer", - "title": "Weight" - }, - "index": { - "type": "integer", - "title": "Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Segment List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "value" - ] - }, - "title": "Colors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Policy Endpoints" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Segment Routing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Traffic Engineering" - }, - "service_routing_configuration_bgp": { - "type": "object", - "properties": { - "no_equals_default": { - "type": "boolean", - "title": "No Equals Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Routing Configuration BGP" - }, - "service_routing_protocols_model": { - "type": "string", - "enum": [ - "multi-agent", - "ribd" - ], - "title": "Service Routing Protocols Model" - }, - "service_unsupported_transceiver": { - "type": "object", - "properties": { - "license_name": { - "type": "string", - "title": "License Name" - }, - "license_key": { - "type": "string", - "title": "License Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Unsupported Transceiver" - }, - "sflow": { - "type": "object", - "properties": { - "sample": { - "type": "integer", - "title": "Sample" - }, - "sample_input_subinterface": { - "type": "boolean", - "title": "Sample Input Subinterface" - }, - "sample_output_subinterface": { - "type": "boolean", - "title": "Sample Output Subinterface" - }, - "dangerous": { - "type": "boolean", - "title": "Dangerous" - }, - "polling_interval": { - "type": "integer", - "description": "Polling interval in seconds.", - "title": "Polling Interval" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "string", - "description": "Sflow Destination IP Address.", - "title": "Destination" - }, - "port": { - "type": "integer", - "description": "Port Number", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "destination" - ] - }, - "title": "Destinations" - }, - "source": { - "type": "string", - "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", - "title": "Source" - }, - "source_interface": { - "type": "string", - "description": "Source Interface.", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "string", - "description": "Sflow Destination IP Address.", - "title": "Destination" - }, - "port": { - "type": "integer", - "description": "Port Number.", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "destination" - ] - }, - "title": "Destinations" - }, - "source": { - "type": "string", - "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", - "title": "Source" - }, - "source_interface": { - "type": "string", - "description": "Source Interface.", - "title": "Source Interface" - }, - "extensions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Extension Name.", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "description": "Enable or Disable Extension.", - "title": "Enabled" - } - }, - "required": [ - "enabled", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Extensions" - }, - "interface": { - "type": "object", - "properties": { - "disable": { - "type": "object", - "properties": { - "default": { - "type": "boolean", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Disable" - }, - "egress": { - "type": "object", - "properties": { - "enable_default": { - "type": "boolean", - "description": "Enable egress sFlow by default.\n", - "title": "Enable Default" - }, - "unmodified": { - "type": "boolean", - "description": "Enable egress sFlow unmodified.\nPlatform dependent feature.\n", - "title": "Unmodified" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface" - }, - "run": { - "type": "boolean", - "title": "Run" - }, - "hardware_acceleration": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "modules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Modules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Acceleration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "snmp_server": { - "type": "object", - "description": "SNMP settings.", - "properties": { - "engine_ids": { - "type": "object", - "properties": { - "local": { - "type": "string", - "description": "Engine ID in hexadecimal.\n", - "title": "Local" - }, - "remotes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Remote engine ID in hexadecimal.\n", - "title": "ID" - }, - "address": { - "type": "string", - "description": "Hostname or IP of remote engine.\n", - "title": "Address" - }, - "udp_port": { - "type": "integer", - "title": "UDP Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Remotes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Engine IDs" - }, - "contact": { - "type": "string", - "description": "SNMP contact.", - "title": "Contact" - }, - "location": { - "type": "string", - "description": "SNMP location.", - "title": "Location" - }, - "communities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community name.", - "title": "Name" - }, - "access": { - "type": "string", - "enum": [ - "ro", - "rw" - ], - "title": "Access" - }, - "access_list_ipv4": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv4" - }, - "access_list_ipv6": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv6" - }, - "view": { - "type": "string", - "title": "View" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Communities" - }, - "ipv4_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv4 Acls" - }, - "ipv6_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Acls" - }, - "local_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Interfaces" - }, - "views": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "SNMP view name.", - "title": "Name" - }, - "mib_family_name": { - "type": "string", - "title": "MIB Family Name" - }, - "included": { - "type": "boolean", - "title": "Included" - }, - "MIB_family_name": { - "type": "string", - "title": "MIB Family Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Views" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "authentication": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication" - }, - "read": { - "type": "string", - "description": "Read view.", - "title": "Read" - }, - "write": { - "type": "string", - "description": "Write view.", - "title": "Write" - }, - "notify": { - "type": "string", - "description": "Notify view.", - "title": "Notify" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Groups" - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Username.", - "title": "Name" - }, - "group": { - "type": "string", - "description": "Group name.", - "title": "Group" - }, - "remote_address": { - "type": "string", - "description": "Hostname or ip of remote engine.\nThe remote_address and udp_port are used for remote users.\n", - "title": "Remote Address" - }, - "udp_port": { - "type": "integer", - "description": "udp_port will not be used if no remote_address is configured.\n", - "title": "UDP Port" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "localized": { - "type": "string", - "description": "Engine ID in hexadecimal for localizing auth and/or priv.\n", - "title": "Localized" - }, - "auth": { - "type": "string", - "description": "Hash algorithm.\n", - "title": "Auth" - }, - "auth_passphrase": { - "type": "string", - "description": "Hashed authentication passphrase if localized is used else cleartext authentication passphrase.\n", - "title": "Auth Passphrase" - }, - "priv": { - "type": "string", - "description": "Encryption algorithm.\n", - "title": "Priv" - }, - "priv_passphrase": { - "type": "string", - "description": "Hashed privacy passphrase if localized is used else cleartext privacy passphrase.\n", - "title": "Priv Passphrase" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "version": { - "type": "string", - "enum": [ - "1", - "2c", - "3" - ], - "title": "Version" - }, - "community": { - "type": "string", - "description": "Community name.", - "title": "Community" - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "username": { - "type": "string", - "title": "Username" - }, - "authentication_level": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Hosts" - }, - "traps": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "default": false, - "description": "Enable or disable all snmp-traps.\n", - "title": "Enable" - }, - "snmp_traps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Snmp Traps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traps" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "enable": { - "type": "boolean", - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Snmp Server" - }, - "spanning_tree": { - "type": "object", - "properties": { - "root_super": { - "type": "boolean", - "title": "Root Super" - }, - "edge_port": { - "type": "object", - "properties": { - "bpdufilter_default": { - "type": "boolean", - "title": "Bpdufilter Default" - }, - "bpduguard_default": { - "type": "boolean", - "title": "Bpduguard Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Edge Port" - }, - "mode": { - "type": "string", - "enum": [ - "mstp", - "rstp", - "rapid-pvst", - "none" - ], - "title": "Mode" - }, - "bpduguard_rate_limit": { - "type": "object", - "properties": { - "default": { - "type": "boolean", - "title": "Default" - }, - "count": { - "type": "integer", - "description": "Maximum number of BPDUs per timer interval.", - "title": "Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Bpduguard Rate Limit" - }, - "rstp_priority": { - "type": "integer", - "title": "Rstp Priority" - }, - "mst": { - "type": "object", - "properties": { - "pvst_border": { - "type": "boolean", - "title": "Pvst Border" - }, - "configuration": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "revision": { - "type": "integer", - "description": "0-65535.", - "title": "Revision" - }, - "instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "Instance ID.", - "title": "ID" - }, - "vlans": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18\n", - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Instances" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Configuration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mst" - }, - "mst_instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Instance ID.", - "title": "ID" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Mst Instances" - }, - "no_spanning_tree_vlan": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", - "title": "No Spanning Tree VLAN" - }, - "rapid_pvst_instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", - "title": "ID" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Rapid Pvst Instances" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Spanning Tree" - }, - "standard_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ip any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Standard Access Lists" - }, - "static_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "destination_address_prefix": { - "type": "string", - "description": "IPv4_network/Mask.", - "title": "Destination Address Prefix" - }, - "interface": { - "type": "string", - "title": "Interface" - }, - "gateway": { - "type": "string", - "description": "IPv4 Address.", - "title": "Gateway" - }, - "track_bfd": { - "type": "boolean", - "description": "Track next-hop using BFD.", - "title": "Track BFD" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - }, - "tag": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Tag" - }, - "name": { - "type": "string", - "description": "Description.", - "title": "Name" - }, - "metric": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Routes" - }, - "stun": { - "type": "object", - "description": "STUN configuration.", - "properties": { - "client": { - "type": "object", - "description": "STUN client settings.", - "properties": { - "server_profiles": { - "type": "array", - "description": "List of server profiles for the client.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "port": { - "type": "integer", - "description": "Destination port for the request STUN server (default - 3478).", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Server Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "server": { - "type": "object", - "description": "STUN server settings.", - "properties": { - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "local_interfaces": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Local Interfaces" - }, - "bindings_timeout": { - "type": "integer", - "description": "Timeout for bindings stored on STUN server in seconds.", - "minimum": 10, - "maximum": 7200, - "title": "Bindings Timeout" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "ssl_connection_lifetime": { - "type": "object", - "description": "SSL connection lifetime in minutes or hours.\nIf both are specified, minutes is given higher precedence.", - "properties": { - "minutes": { - "type": "integer", - "description": "SSL connection lifetime in minutes (default - 120).", - "minimum": 1, - "maximum": 1440, - "title": "Minutes" - }, - "hours": { - "type": "integer", - "description": "SSL connection lifetime in hours (default - 2).", - "minimum": 1, - "maximum": 24, - "title": "Hours" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SSL Connection Lifetime" - }, - "port": { - "type": "integer", - "description": "Listening port for STUN server (default - 3478).", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Server" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - }, - "switchport_default": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "routed", - "access" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "cos": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "COS" - }, - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "description": "VLAN ID.", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport Default" - }, - "switchport_port_security": { - "type": "object", - "properties": { - "mac_address": { - "type": "object", - "properties": { - "aging": { - "type": "boolean", - "title": "Aging" - }, - "moveable": { - "type": "boolean", - "title": "Moveable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address" - }, - "persistence_disabled": { - "type": "boolean", - "title": "Persistence Disabled" - }, - "violation_protect_chip_based": { - "type": "boolean", - "title": "Violation Protect Chip Based" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport Port Security" - }, - "sync_e": { - "type": "object", - "properties": { - "network_option": { - "type": "integer", - "minimum": 1, - "maximum": 2, - "title": "Network Option" - } - }, - "required": [ - "network_option" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "system": { - "type": "object", - "properties": { - "control_plane": { - "type": "object", - "properties": { - "tcp_mss": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment size.", - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment size.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss" - }, - "ipv4_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "acl_name": { - "type": "string", - "title": "Acl Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "acl_name" - ] - }, - "title": "IPv4 Access Groups" - }, - "ipv6_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "acl_name": { - "type": "string", - "title": "Acl Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "acl_name" - ] - }, - "title": "IPv6 Access Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Plane" - }, - "l1": { - "type": "object", - "properties": { - "unsupported_speed_action": { - "type": "string", - "enum": [ - "error", - "warn" - ], - "title": "Unsupported Speed Action" - }, - "unsupported_error_correction_action": { - "type": "string", - "enum": [ - "error", - "warn" - ], - "title": "Unsupported Error Correction Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "System" - }, - "tacacs_servers": { - "type": "object", - "properties": { - "timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "key": { - "type": "string", - "description": "Encrypted key.", - "title": "Key" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Key Type" - }, - "single_connection": { - "type": "boolean", - "title": "Single Connection" - }, - "timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Hosts" - }, - "policy_unknown_mandatory_attribute_ignore": { - "type": "boolean", - "title": "Policy Unknown Mandatory Attribute Ignore" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tacacs Servers" - }, - "tap_aggregation": { - "type": "object", - "properties": { - "mode": { - "type": "object", - "properties": { - "exclusive": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "profile": { - "description": "Profile Name.", - "type": "string", - "title": "Profile" - }, - "no_errdisable": { - "type": "array", - "items": { - "type": "string", - "description": "Interface name e.g Ethernet1, Port-Channel1." - }, - "title": "No Errdisable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exclusive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mode" - }, - "encapsulation_dot1br_strip": { - "type": "boolean", - "title": "Encapsulation dot1br Strip" - }, - "encapsulation_vn_tag_strip": { - "type": "boolean", - "title": "Encapsulation VN Tag Strip" - }, - "protocol_lldp_trap": { - "type": "boolean", - "title": "Protocol LLDP Trap" - }, - "truncation_size": { - "type": "integer", - "description": "Allowed truncation_size values vary depending on the platform.\n", - "title": "Truncation Size" - }, - "mac": { - "type": "object", - "properties": { - "timestamp": { - "type": "object", - "description": "mac.timestamp.replace_source_mac and mac.timestamp.header.format are mutually exclsuive. If both are defined, replace_source_mac takes precedence.\n", - "properties": { - "replace_source_mac": { - "type": "boolean", - "title": "Replace Source MAC" - }, - "header": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "48-bit", - "64-bit" - ], - "title": "Format" - }, - "eth_type": { - "description": "EtherType.", - "type": "integer", - "title": "Eth Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Header" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timestamp" - }, - "fcs_append": { - "type": "boolean", - "description": "mac.fcs_append and mac.fcs_error are mutually exclusive. If both are defined, mac.fcs_append takes precedence.\n", - "title": "FCS Append" - }, - "fcs_error": { - "type": "string", - "enum": [ - "correct", - "discard", - "pass-through" - ], - "title": "FCS Error" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tap Aggregation" - }, - "tcam_profile": { - "type": "object", - "title": "Hardware TCAM Profiles", - "properties": { - "system": { - "type": "string", - "description": "TCAM profile name to activate.\n", - "title": "System" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tcam-Profile Name.", - "title": "Name" - }, - "config": { - "type": "string", - "description": "TCAM Profile Config. Since these can be very long, it is often a good idea to import the config from a file.\nExample: \"{{ lookup('file', 'TCAM_TRAFFIC_POLICY.conf') }}\"\n", - "title": "Config" - }, - "source": { - "type": "string", - "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.\n", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "terminal": { - "type": "object", - "title": "Terminal Settings", - "properties": { - "length": { - "type": "integer", - "minimum": 0, - "maximum": 32767, - "title": "Length" - }, - "width": { - "type": "integer", - "minimum": 10, - "maximum": 32767, - "title": "Width" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of tracker object.", - "title": "Name" - }, - "interface": { - "type": "string", - "description": "Name of tracked interface.", - "title": "Interface" - }, - "tracked_property": { - "type": "string", - "default": "line-protocol", - "description": "Property to track.", - "title": "Tracked Property" - } - }, - "required": [ - "interface", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Trackers" - }, - "traffic_policies": { - "type": "object", - "properties": { - "options": { - "type": "object", - "properties": { - "counter_per_interface": { - "type": "boolean", - "title": "Counter Per Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Options" - }, - "field_sets": { - "type": "object", - "properties": { - "ipv4": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 Prefix Field Set Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 Prefix." - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4" - }, - "ipv6": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 Prefix Field Set Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IPv6 Prefix." - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv6" - }, - "ports": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "L4 Port Field Set Name.", - "title": "Name" - }, - "port_range": { - "type": "string", - "description": "Example: '10,20,80,440-450'", - "title": "Port Range" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Field Sets" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Traffic Policy Name.", - "title": "Name" - }, - "matches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Traffic Policy Item.", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Type" - }, - "source": { - "type": "object", - "properties": { - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or prefix." - }, - "title": "Prefixes" - }, - "prefix_lists": { - "type": "array", - "description": "Field-set prefix lists.", - "items": { - "type": "string" - }, - "title": "Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "destination": { - "type": "object", - "properties": { - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or prefix." - }, - "title": "Prefixes" - }, - "prefix_lists": { - "type": "array", - "description": "Field-set prefix lists.", - "items": { - "type": "string" - }, - "title": "Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "ttl": { - "type": "string", - "description": "TTL range.", - "title": "TTL" - }, - "fragment": { - "type": "object", - "description": "The 'fragment' command is not supported when 'source port'\nor 'destination port' command is configured.\n", - "properties": { - "offset": { - "type": "string", - "description": "Fragment offset range.", - "title": "Offset" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fragment" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "title": "Protocol" - }, - "src_port": { - "type": "string", - "description": "Port range.", - "title": "Src Port" - }, - "dst_port": { - "type": "string", - "description": "Port range.", - "title": "Dst Port" - }, - "src_field": { - "type": "string", - "description": "L4 port range field set.", - "title": "Src Field" - }, - "dst_field": { - "type": "string", - "description": "L4 port range field set.", - "title": "Dst Field" - }, - "flags": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "established", - "initial" - ] - }, - "title": "Flags" - }, - "icmp_type": { - "type": "array", - "items": { - "type": "string" - }, - "title": "ICMP Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "protocol" - ] - }, - "title": "Protocols" - }, - "actions": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Actions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Matches" - }, - "default_actions": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Actions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policies" - }, - "transceiver_qsfp_default_mode_4x10": { - "type": "boolean", - "default": true, - "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.\n", - "title": "Transceiver Qsfp Default Mode 4X10" - }, - "tunnel_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tunnel Interface Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "underlay_vrf": { - "type": "string", - "description": "Underlay VRF Name.", - "title": "Underlay VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "access_group_in": { - "description": "IPv4 ACL Name for ingress.", - "type": "string", - "title": "Access Group In" - }, - "access_group_out": { - "description": "IPv4 ACL Name for egress.", - "type": "string", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "description": "IPv6 ACL Name for ingress.", - "type": "string", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "description": "IPv6 ACL Name for egress.", - "type": "string", - "title": "IPv6 Access Group Out" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment Size for IPv4.", - "minimum": 64, - "maximum": 65495, - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment Size for IPv6.", - "minimum": 64, - "maximum": 65475, - "title": "IPv6" - }, - "direction": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.\n", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "tunnel_mode": { - "type": "string", - "enum": [ - "gre", - "ipsec" - ], - "description": "Tunnel encapsulation method.\n`gre`: Generic route encapsulation protocol,\n`ipsec`: IPsec-over-IP encapsulation.", - "title": "Tunnel Mode" - }, - "source_interface": { - "type": "string", - "description": "Tunnel Source Interface Name.", - "title": "Source Interface" - }, - "destination": { - "type": "string", - "description": "IPv4 or IPv6 Address Tunnel Destination.", - "title": "Destination" - }, - "path_mtu_discovery": { - "type": "boolean", - "description": "Enable Path MTU Discovery On Tunnel.", - "title": "Path MTU Discovery" - }, - "ipsec_profile": { - "type": "string", - "description": "Used only when `tunnel_mode` is set to `ipsec`.\nIt must target a defined IPsec profile.", - "title": "Ipsec Profile" - }, - "nat_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Nat Profile" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tunnel Interfaces" - }, - "virtual_source_nat_vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "ip_address": { - "type": "string", - "description": "IPv4 Address.", - "title": "IP Address" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 Address.", - "title": "IPv6 Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Virtual Source Nat VRFs" - }, - "vlan_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VLAN interface name like \"Vlan123\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "arp_aging_timeout": { - "type": "integer", - "description": "In seconds.", - "minimum": 1, - "maximum": 65535, - "title": "ARP Aging Timeout" - }, - "arp_cache_dynamic_capacity": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "ARP Cache Dynamic Capacity" - }, - "arp_gratuitous_accept": { - "type": "boolean", - "title": "ARP Gratuitous Accept" - }, - "arp_monitor_mac_address": { - "type": "boolean", - "title": "ARP Monitor MAC Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ip_directed_broadcast": { - "type": "boolean", - "title": "IP Directed Broadcast" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 address or IPv4_address/Mask." - }, - "title": "IP Virtual Router Addresses" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address Virtual" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_igmp": { - "type": "boolean", - "title": "IP IGMP" - }, - "ip_igmp_version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "title": "IP IGMP Version" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "ip_helpers": { - "type": "array", - "description": "List of DHCP servers.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IP address or hostname of DHCP server.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface used as source for forwarded DHCP packets.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF where DHCP server can be reached.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "IP DHCP Relay All Subnets" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_virtual_router_address": { - "type": "string", - "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", - "deprecated": true, - "title": "IPv6 Virtual Router Address" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", - "items": { - "type": "string", - "description": "IPv6 address or IPv6_address/Mask." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_other_config_flag": { - "type": "boolean", - "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", - "title": "IPv6 ND Other Config Flag" - }, - "ipv6_nd_cache": { - "type": "object", - "description": "IPv6 neighbor cache options.", - "properties": { - "dynamic_capacity": { - "type": "integer", - "description": "Capacity of dynamic cache entries.", - "minimum": 0, - "maximum": 4294967295, - "title": "Dynamic Capacity" - }, - "expire": { - "type": "integer", - "description": "Cache entries expirery in seconds.", - "minimum": 1, - "maximum": 65535, - "title": "Expire" - }, - "refresh_always": { - "type": "boolean", - "description": "Force refresh on cache expiry.", - "title": "Refresh Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 ND Cache" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "ipv6_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "IPv6 DHCP Relay All Subnets" - }, - "access_group_in": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group Out" - }, - "multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password used for simple authentication.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "description": "Keys used for message-digest authentication.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "no_autostate": { - "type": "boolean", - "title": "No Autostate" - }, - "vrrp_ids": { - "type": "array", - "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "vrrp": { - "type": "object", - "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", - "deprecated": true, - "properties": { - "virtual_router": { - "type": "string", - "description": "Virtual Router ID.", - "title": "Virtual Router" - }, - "priority": { - "type": "integer", - "description": "Instance priority.", - "title": "Priority" - }, - "advertisement_interval": { - "type": "integer", - "title": "Advertisement Interval" - }, - "preempt_delay_minimum": { - "type": "integer", - "title": "Preempt Delay Minimum" - }, - "ipv4": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VRRP" - }, - "ip_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Attached Host Route Export" - }, - "ipv6_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Administrative distance for generated routes.", - "title": "Distance" - }, - "prefix_length": { - "type": "integer", - "minimum": 0, - "maximum": 128, - "description": "Prefix length for generated routes.", - "title": "Prefix Length" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Attached Host Route Export" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Minimum RX hold time in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Name of policy-map used for policy based routing.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of VLANs as string.", - "title": "PVLAN Mapping" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Key only used for documentation or validation purposes.", - "title": "Tags" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VLAN Interfaces" - }, - "vlan_internal_order": { - "type": "object", - "properties": { - "allocation": { - "type": "string", - "enum": [ - "ascending", - "descending" - ], - "title": "Allocation" - }, - "range": { - "type": "object", - "properties": { - "beginning": { - "type": "integer", - "minimum": 2, - "maximum": 4094, - "description": "First VLAN ID.", - "title": "Beginning" - }, - "ending": { - "type": "integer", - "minimum": 2, - "maximum": 4094, - "description": "Last VLAN ID.", - "title": "Ending" - } - }, - "required": [ - "beginning", - "ending" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Range" - } - }, - "required": [ - "allocation", - "range" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VLAN Internal Order" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "name": { - "type": "string", - "description": "VLAN Name.", - "title": "Name" - }, - "state": { - "type": "string", - "enum": [ - "active", - "suspend" - ], - "title": "State" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Trunk Group Name." - }, - "title": "Trunk Groups" - }, - "private_vlan": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "community", - "isolated" - ], - "title": "Type" - }, - "primary_vlan": { - "type": "integer", - "description": "Primary VLAN ID.", - "title": "Primary VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Private VLAN" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vmtracer_sessions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Vmtracer Session Name.", - "title": "Name" - }, - "url": { - "type": "string", - "title": "URL" - }, - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "description": "Type 7 Password Hash.", - "title": "Password" - }, - "autovlan_disable": { - "type": "boolean", - "title": "Autovlan Disable" - }, - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VMTracer Sessions" - }, - "vrfs": { - "type": "array", - "description": "These keys are ignored if the name of the vrf is 'default'.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip_routing": { - "type": "boolean", - "title": "IP Routing" - }, - "ipv6_routing": { - "type": "boolean", - "title": "IPv6 Routing" - }, - "ip_routing_ipv6_interfaces": { - "type": "boolean", - "title": "IP Routing IPv6 Interfaces" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "vxlan_interface": { - "type": "object", - "properties": { - "Vxlan1": { - "type": "object", - "properties": { - "description": { - "type": "string", - "title": "Description" - }, - "vxlan": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "description": "Source Interface Name.", - "title": "Source Interface" - }, - "multicast": { - "type": "object", - "properties": { - "headend_replication": { - "type": "boolean", - "title": "Headend Replication" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "controller_client": { - "type": "object", - "description": "Client to CVX Controllers.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Controller Client" - }, - "mlag_source_interface": { - "type": "string", - "title": "MLAG Source Interface" - }, - "udp_port": { - "type": "integer", - "title": "UDP Port" - }, - "vtep_to_vtep_bridging": { - "type": "boolean", - "description": "Enable bridging between different VTEPs in vxlan overlay.", - "title": "Vtep To Vtep Bridging" - }, - "virtual_router_encapsulation_mac_address": { - "type": "string", - "description": "\"mlag-system-id\" or ethernet_address (H.H.H).\n", - "title": "Virtual Router Encapsulation MAC Address" - }, - "bfd_vtep_evpn": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "prefix_list": { - "type": "string", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Vtep EVPN" - }, - "qos": { - "type": "object", - "description": "For the Traffic Class to be derived based on the outer DSCP field of the incoming VxLan packet, the core ports must be in \"DSCP Trust\" mode.\n!!!Warning, only few hardware types with software version >= 4.26.0 support the below knobs to configure Vxlan DSCP mapping.\n", - "properties": { - "dscp_propagation_encapsulation": { - "type": "boolean", - "title": "DSCP Propagation Encapsulation" - }, - "ecn_propagation": { - "type": "boolean", - "description": "Enable copying the ECN marking to/from encapsulated packets.\n", - "title": "Ecn Propagation" - }, - "map_dscp_to_traffic_class_decapsulation": { - "type": "boolean", - "title": "Map DSCP To Traffic Class Decapsulation" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "multicast_group": { - "type": "string", - "description": "IP Multicast Group Address.", - "title": "Multicast Group" - }, - "flood_vteps": { - "type": "array", - "items": { - "type": "string", - "description": "Remote VTEP IP Address." - }, - "title": "Flood Vteps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "multicast_group": { - "type": "string", - "description": "IP Multicast Group Address.", - "title": "Multicast Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "flood_vteps": { - "type": "array", - "items": { - "type": "string", - "description": "Remote VTEP IP Address." - }, - "title": "Flood Vteps" - }, - "flood_vtep_learned_data_plane": { - "type": "boolean", - "title": "Flood Vtep Learned Data Plane" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Vxlan1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN Interface" - } - }, - "additionalProperties": true -} \ No newline at end of file From d11a8346ab3be55f521911f0bcec8f5ede5fff71 Mon Sep 17 00:00:00 2001 From: Claus Holbech Date: Thu, 8 Aug 2024 14:41:15 +0200 Subject: [PATCH 15/24] Delete python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json --- .../schema/eos_designs.jsonschema.json | 62127 ---------------- 1 file changed, 62127 deletions(-) delete mode 100644 python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json deleted file mode 100644 index b4de8555444..00000000000 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ /dev/null @@ -1,62127 +0,0 @@ -{ - "type": "object", - "properties": { - "application_classification": { - "type": "object", - "description": "Application traffic recognition configuration.", - "properties": { - "categories": { - "type": "array", - "description": "List of categories.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Category name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Categories" - }, - "field_sets": { - "type": "object", - "properties": { - "l4_ports": { - "type": "array", - "description": "L4 port field-set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "L4 port field-set name.", - "title": "Name" - }, - "port_values": { - "type": "array", - "items": { - "type": "string", - "description": "Port values or range of port values.\nPort values are between 0 and 65535." - }, - "title": "Port Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Ports" - }, - "ipv4_prefixes": { - "type": "array", - "description": "IPv4 prefix field set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 prefix field-set name.", - "title": "Name" - }, - "prefix_values": { - "type": "array", - "items": { - "type": "string", - "description": "IP prefix (ex 1.2.3.0/24)." - }, - "title": "Prefix Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Field Sets" - }, - "applications": { - "type": "object", - "properties": { - "ipv4_applications": { - "type": "array", - "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "src_prefix_set_name": { - "type": "string", - "description": "Source prefix set name.", - "title": "Src Prefix Set Name" - }, - "dest_prefix_set_name": { - "type": "string", - "description": "Destination prefix set name.", - "title": "Dest Prefix Set Name" - }, - "dscp_ranges": { - "type": "array", - "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", - "items": { - "type": "string", - "description": "DSCP value or range syntax.", - "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" - }, - "title": "DSCP Ranges" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Applications" - }, - "l4_applications": { - "type": "array", - "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Applications" - }, - "application_profiles": { - "type": "array", - "description": "Group of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Profile name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications part of the application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - }, - "application_transports": { - "type": "array", - "description": "List of transport protocols.", - "items": { - "type": "string", - "description": "Transport name.", - "enum": [ - "http", - "https", - "udp", - "tcp", - "ip", - "ip6", - "ssl", - "rtp", - "sctp", - "quic" - ] - }, - "title": "Application Transports" - }, - "categories": { - "type": "array", - "description": "Categories under this application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of a category.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Categories" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Application Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Application Classification" - }, - "avd_data_conversion_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug", - "quiet" - ], - "default": "debug", - "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", - "title": "AVD Data Conversion Mode" - }, - "avd_data_validation_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug" - ], - "default": "warning", - "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", - "title": "AVD Data Validation Mode" - }, - "bfd_multihop": { - "type": "object", - "description": "BFD Multihop tuning.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "default": { - "interval": 300, - "min_rx": 300, - "multiplier": 3 - }, - "title": "BFD Multihop" - }, - "bgp_as": { - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\" to use to configure overlay when \"overlay_routing_protocol\" == ibgp.\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "type": "string", - "title": "BGP As" - }, - "bgp_default_ipv4_unicast": { - "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors.\nIt is best practice to disable activation.\n", - "type": "boolean", - "default": false, - "title": "BGP Default IPv4 Unicast" - }, - "bgp_distance": { - "type": "object", - "properties": { - "external_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "External Routes" - }, - "internal_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Internal Routes" - }, - "local_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Local Routes" - } - }, - "required": [ - "external_routes", - "internal_routes", - "local_routes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP Distance" - }, - "bgp_ecmp": { - "description": "Maximum ECMP for BGP multi-path.\nThe default value is 4 except for WAN Routers where the default value is unset (falls back to EOS default).", - "type": "integer", - "title": "BGP ECMP" - }, - "bgp_graceful_restart": { - "description": "BGP graceful-restart allows a BGP speaker with separate control plane and data plane processing to continue forwarding traffic during a BGP restart.\nIts neighbors (receiving speakers) may retain routing information from the restarting speaker while a BGP session with it is being re-established, reducing route flapping.\n", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "description": "Enable or disable graceful-restart for all BGP peers.", - "title": "Enabled" - }, - "restart_time": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "default": 300, - "description": "Restart time in seconds.", - "title": "Restart Time" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP Graceful Restart" - }, - "bgp_maximum_paths": { - "description": "Maximum Paths for BGP multi-path.\nThe default value is 4 except for WAN Routers where the default value is 16.", - "type": "integer", - "minimum": 1, - "maximum": 512, - "title": "BGP Maximum Paths" - }, - "bgp_mesh_pes": { - "type": "boolean", - "default": false, - "description": "Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.\nOnly supported in combination with MPLS overlay.\n", - "title": "BGP Mesh PEs" - }, - "bgp_peer_groups": { - "description": "Leverage an Arista EOS switch to generate the encrypted password using the correct peer group name.\nNote that the name of the peer groups use '-' instead of '_' in EOS configuration.\n", - "type": "object", - "properties": { - "ipv4_underlay_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "IPv4-UNDERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": false, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4 Underlay Peers" - }, - "mlag_ipv4_underlay_peer": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "MLAG-IPv4-UNDERLAY-PEER", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": false, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG IPv4 Underlay Peer" - }, - "evpn_overlay_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "EVPN-OVERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Overlay Peers" - }, - "evpn_overlay_core": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "EVPN-OVERLAY-CORE", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Overlay Core" - }, - "mpls_overlay_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "MPLS-OVERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS Overlay Peers" - }, - "rr_overlay_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "RR-OVERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rr Overlay Peers" - }, - "ipvpn_gateway_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "IPVPN-GATEWAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ipvpn Gateway Peers" - }, - "wan_overlay_peers": { - "type": "object", - "properties": { - "name": { - "type": "string", - "default": "WAN-OVERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.\nWhen configuring a password on the `wan_overlay_peers` BGP peer group,\nit may also be required to set a password for the `wan_rr_overlay_peers` BGP peer group.\nThis is required in the case where one or more pathfinders use the same VTEP IP range as the edge routers.\nIf the password is not set, the static BGP peerings between Pathfinders may not come up.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Specify the BFD timers to override the default values.\nIt is recommended to keep BFD total timeout longer than the DPS timeout.\nThe Default BFD timeout is 10 x 1 seconds and the default DPS timeout is 5 x 1 seconds.", - "properties": { - "interval": { - "type": "integer", - "default": 1000, - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "default": 1000, - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "default": 10, - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "listen_range_prefixes": { - "type": "array", - "description": "Only used for nodes where `wan_role` is `server` like AutoVPN RRs and Pathfinders.\nFor clients, AVD will raise an error if the Loopback0 IP is not in any listen range.", - "items": { - "type": "string", - "description": "The prefixes to use in listen_range." - }, - "title": "Listen Range Prefixes" - }, - "ttl_maximum_hops": { - "type": "integer", - "default": 1, - "title": "TTL Maximum Hops" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wan Overlay Peers" - }, - "wan_rr_overlay_peers": { - "type": "object", - "description": "Configuration options for the peer-group created to peer between AutoVPN RRs or CV Pathfinders.", - "properties": { - "name": { - "type": "string", - "default": "WAN-RR-OVERLAY-PEERS", - "description": "Name of peer group.", - "title": "Name" - }, - "password": { - "type": "string", - "description": "Type 7 encrypted password.\nWhen configuring a password on the `wan_overlay_peers` BGP peer group,\nit may also be required to set a password for the `wan_rr_overlay_peers` BGP peer group.\nThis is required in the case where one or more pathfinders use the same VTEP IP range as the edge routers.\nIf the password is not set, the static BGP peerings between Pathfinders may not come up.", - "title": "Password" - }, - "bfd": { - "type": "boolean", - "default": true, - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Specify the BFD timers to override the default values.\nIt is recommended to keep BFD total timeout longer than the DPS timeout.\nThe Default BFD timeout is 10 x 1 seconds and the default DPS timeout is 5 x 1 seconds.", - "properties": { - "interval": { - "type": "integer", - "default": 1000, - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "default": 1000, - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "default": 10, - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ttl_maximum_hops": { - "type": "integer", - "default": 1, - "title": "TTL Maximum Hops" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wan Rr Overlay Peers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP Peer Groups" - }, - "bgp_update_wait_install": { - "type": "boolean", - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", - "title": "BGP Update Wait Install" - }, - "bgp_update_wait_for_convergence": { - "type": "boolean", - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", - "title": "BGP Update Wait For Convergence" - }, - "connected_endpoints_keys": { - "description": "Endpoints connecting to the fabric can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`connected_endpoints_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "Key" - }, - "type": { - "type": "string", - "description": "Type used for documentation.", - "title": "Type" - }, - "description": { - "type": "string", - "description": "Description used for documentation.", - "title": "Description" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "key" - ] - }, - "default": [ - { - "key": "servers", - "type": "server", - "description": "Server." - }, - { - "key": "firewalls", - "type": "firewall", - "description": "Firewall." - }, - { - "key": "routers", - "type": "router", - "description": "Router." - }, - { - "key": "load_balancers", - "type": "load_balancer", - "description": "Load Balancer." - }, - { - "key": "storage_arrays", - "type": "storage_array", - "description": "Storage Array." - }, - { - "key": "cpes", - "type": "cpe", - "description": "CPE." - }, - { - "key": "workstations", - "type": "workstation", - "description": "Workstation." - }, - { - "key": "access_points", - "type": "access_point", - "description": "Access Point." - }, - { - "key": "phones", - "type": "phone", - "description": "Phone." - }, - { - "key": "printers", - "type": "printer", - "description": "Printer." - }, - { - "key": "cameras", - "type": "camera", - "description": "Camera." - }, - { - "key": "generic_devices", - "type": "generic_device", - "description": "Generic Device." - } - ], - "title": "Connected Endpoints Keys" - }, - "core_interfaces": { - "type": "object", - "properties": { - "p2p_links_ip_pools": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "P2P pool name.", - "title": "Name" - }, - "ipv4_pool": { - "type": "string", - "description": "IPv4 address/Mask.", - "title": "IPv4 Pool" - }, - "prefix_size": { - "type": "integer", - "description": "Subnet mask size.", - "default": 31, - "minimum": 8, - "maximum": 31, - "title": "Prefix Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "P2P Links IP Pools" - }, - "p2p_links_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "P2P profile name. Any variable supported under `p2p_links` can be inherited from a profile.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", - "title": "ID" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "ip_pool": { - "type": "string", - "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", - "title": "IP Pool" - }, - "subnet": { - "type": "string", - "description": "IPv4 address/Mask. Subnet used on this P2P link.", - "title": "Subnet" - }, - "ip": { - "type": "array", - "description": "Specific IP addresses used on this P2P link.", - "items": { - "type": "string", - "description": "Node IPv4 address/Mask." - }, - "title": "IP" - }, - "ipv6_enable": { - "type": "boolean", - "default": false, - "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", - "title": "IPv6 Enable" - }, - "nodes": { - "type": "array", - "description": "Nodes where this link should be configured.", - "items": { - "type": "string", - "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" - }, - "title": "Nodes" - }, - "interfaces": { - "type": "array", - "description": "Interfaces where this link should be configured and Required unless using port-channels.", - "items": { - "type": "string", - "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" - }, - "title": "Interfaces" - }, - "as": { - "type": "array", - "description": "AS numbers for BGP.\nRequired with bgp peering.\n", - "items": { - "type": "string", - "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." - }, - "title": "As" - }, - "descriptions": { - "type": "array", - "description": "Interface description.", - "items": { - "type": "string" - }, - "title": "Descriptions" - }, - "include_in_underlay_protocol": { - "type": "boolean", - "default": true, - "description": "Add this interface to underlay routing protocol.", - "title": "Include In Underlay Protocol" - }, - "isis_hello_padding": { - "type": "boolean", - "default": false, - "title": "ISIS Hello Padding" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1", - "level-2", - "level-1-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "md5", - "text" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "mpls_ip": { - "type": "boolean", - "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", - "title": "MPLS IP" - }, - "mpls_ldp": { - "type": "boolean", - "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", - "title": "MPLS LDP" - }, - "mtu": { - "type": "integer", - "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", - "title": "MTU" - }, - "bfd": { - "type": "boolean", - "default": false, - "description": "Enable BFD (only considered for BGP).", - "title": "BFD" - }, - "ptp": { - "description": "PTP parameters.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "description": "Enable PTP.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow. Overrides `fabric_sflow` setting.", - "title": "Sflow" - }, - "underlay_multicast": { - "type": "boolean", - "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", - "default": false, - "title": "Underlay Multicast" - }, - "flow_tracking": { - "type": "object", - "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "qos_profile": { - "type": "string", - "description": "QOS service profile.", - "title": "QOS Profile" - }, - "macsec_profile": { - "type": "string", - "description": "MAC security profile.", - "title": "Macsec Profile" - }, - "port_channel": { - "description": "Port-channel parameters.", - "type": "object", - "properties": { - "mode": { - "type": "string", - "default": "active", - "title": "Mode" - }, - "nodes_child_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "node": { - "type": "string", - "title": "Node" - }, - "interfaces": { - "type": "array", - "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", - "title": "Channel ID" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "node" - ] - }, - "title": "Nodes Child Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "routing_protocol": { - "type": "string", - "enum": [ - "ebgp" - ], - "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", - "title": "Routing Protocol" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "P2P Links Profiles" - }, - "p2p_links": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "description": "Nodes where this link should be configured.", - "items": { - "type": "string", - "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" - }, - "title": "Nodes" - }, - "profile": { - "type": "string", - "description": "P2P profile name. Profile defined under p2p_profiles.", - "title": "Profile" - }, - "id": { - "type": "integer", - "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", - "title": "ID" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "ip_pool": { - "type": "string", - "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", - "title": "IP Pool" - }, - "subnet": { - "type": "string", - "description": "IPv4 address/Mask. Subnet used on this P2P link.", - "title": "Subnet" - }, - "ip": { - "type": "array", - "description": "Specific IP addresses used on this P2P link.", - "items": { - "type": "string", - "description": "Node IPv4 address/Mask." - }, - "title": "IP" - }, - "ipv6_enable": { - "type": "boolean", - "default": false, - "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", - "title": "IPv6 Enable" - }, - "interfaces": { - "type": "array", - "description": "Interfaces where this link should be configured and Required unless using port-channels.", - "items": { - "type": "string", - "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" - }, - "title": "Interfaces" - }, - "as": { - "type": "array", - "description": "AS numbers for BGP.\nRequired with bgp peering.\n", - "items": { - "type": "string", - "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." - }, - "title": "As" - }, - "descriptions": { - "type": "array", - "description": "Interface description.", - "items": { - "type": "string" - }, - "title": "Descriptions" - }, - "include_in_underlay_protocol": { - "type": "boolean", - "default": true, - "description": "Add this interface to underlay routing protocol.", - "title": "Include In Underlay Protocol" - }, - "isis_hello_padding": { - "type": "boolean", - "default": false, - "title": "ISIS Hello Padding" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1", - "level-2", - "level-1-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "md5", - "text" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "mpls_ip": { - "type": "boolean", - "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", - "title": "MPLS IP" - }, - "mpls_ldp": { - "type": "boolean", - "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", - "title": "MPLS LDP" - }, - "mtu": { - "type": "integer", - "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", - "title": "MTU" - }, - "bfd": { - "type": "boolean", - "default": false, - "description": "Enable BFD (only considered for BGP).", - "title": "BFD" - }, - "ptp": { - "description": "PTP parameters.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "description": "Enable PTP.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow. Overrides `fabric_sflow` setting.", - "title": "Sflow" - }, - "underlay_multicast": { - "type": "boolean", - "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", - "default": false, - "title": "Underlay Multicast" - }, - "flow_tracking": { - "type": "object", - "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "qos_profile": { - "type": "string", - "description": "QOS service profile.", - "title": "QOS Profile" - }, - "macsec_profile": { - "type": "string", - "description": "MAC security profile.", - "title": "Macsec Profile" - }, - "port_channel": { - "description": "Port-channel parameters.", - "type": "object", - "properties": { - "mode": { - "type": "string", - "default": "active", - "title": "Mode" - }, - "nodes_child_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "node": { - "type": "string", - "title": "Node" - }, - "interfaces": { - "type": "array", - "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", - "title": "Channel ID" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "node" - ] - }, - "title": "Nodes Child Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "routing_protocol": { - "type": "string", - "enum": [ - "ebgp" - ], - "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", - "title": "Routing Protocol" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", - "title": "Structured Config" - } - }, - "required": [ - "nodes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "P2P Links" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Core Interfaces" - }, - "custom_structured_configuration_list_merge": { - "type": "string", - "description": "The List-merge strategy used when merging custom structured configurations.\n\nThis applies to all vars prefixed by prefixes in `custom_structured_configuration_prefix`\nand all data under the various `structured_config` options.\n\nThe available list merge strategies:\n- `replace`:\n - Any list will be replaced with the list defined in custom structured configurations.\n- `append`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be appended to the existing list (including duplicates).\n- `keep`:\n - Only set list if there is no existing list or existing list is `None`.\n- `prepend`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be prepended to the existing list (including duplicates).\n- `append_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list.\n- `prepend_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be prepended to the existing list.\n", - "enum": [ - "replace", - "append", - "keep", - "prepend", - "append_rp", - "prepend_rp" - ], - "default": "append_rp", - "title": "Custom Structured Configuration List Merge" - }, - "custom_structured_configuration_prefix": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Custom EOS Structured Configuration keys can be set on any group or host_var level using the name\nof the corresponding `eos_cli_config_gen` key prefixed with content of `custom_structured_configuration_prefix`.\n\nThe content of Custom Structured Configuration variables will be merged with the structured config generated by the eos_designs role.\n\nThe merge is done recursively, so it is possible to update a sub-key of a variable set by `eos_designs` role already.\n\nThe merge follow these recursive merge strategies:\n- New keys will be added for all types.\n- Existing keys of type \"List\" with a \"Primary key\" set in the schema:\n - Strategy can be changed with `custom_structured_configuration_list_merge`. Default strategy:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list\n- Other keys of type \"List\" will have new unique items appended the the existing list.\n- Existing keys of type \"Dictionary\" will recursively merge\n- Other existing keys will be replaced.\n", - "default": [ - "custom_structured_configuration_" - ], - "title": "Custom Structured Configuration Prefix" - }, - "cv_pathfinder_global_sites": { - "description": "Define sites that are outside of the CV Pathfinder hierarchy.\nThis is used to arrange pathfinders in the CloudVision topology layout.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The site name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "location": { - "type": "string", - "description": "Location as a string is resolved on Cloudvision.", - "title": "Location" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Cv Pathfinder Global Sites" - }, - "cv_pathfinder_internet_exit_policies": { - "description": "PREVIEW: These keys are in preview mode.\n\nList of internet-exit policies used for the WAN configuration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Internet-exit policy name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Internet-exit policy type.\ndirect: Exit directly over wan interfaces\nzscaler: Exit using Zscaler secure web gateway service", - "enum": [ - "direct", - "zscaler" - ], - "title": "Type" - }, - "fallback_to_system_default": { - "type": "boolean", - "default": true, - "description": "Add system default exit-group at the end of the policy.", - "title": "Fallback To System Default" - }, - "zscaler": { - "type": "object", - "description": "Zscaler information. Only used if `type` is 'zscaler'.", - "properties": { - "ipsec_key_salt": { - "type": "string", - "description": "\"Salt\" used for auto generation of encryption keys for IPsec tunnels to Zscaler.\nThe keys will be generated as a hash of `salt__`.\nSince this salt can be used to deduct the encryption key, it is recommeneded to use vault.", - "title": "Ipsec Key Salt" - }, - "domain_name": { - "type": "string", - "description": "Domain name as configured in Zscaler for the tenant. Used as UFQDN suffix for authentication.", - "title": "Domain Name" - }, - "encrypt_traffic": { - "type": "boolean", - "default": true, - "description": "When `true` the traffic going over the tunnels will be encrypted with AES-256-GCM. Otherwise the traffic will be using NULL encryption.\nNote that encryption requires a subscription on the Zscaler account.", - "title": "Encrypt Traffic" - }, - "download_bandwidth": { - "type": "integer", - "description": "Maximum allowed download bandwidth in Mbps for each device using this policy.", - "title": "Download Bandwidth" - }, - "upload_bandwidth": { - "type": "integer", - "description": "Maximum allowed upload bandwidth in Mbps for each device using this policy.", - "title": "Upload Bandwidth" - }, - "firewall": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enforce firewall controls.", - "default": false, - "title": "Enabled" - }, - "ips": { - "type": "boolean", - "description": "Enable IPS Controls for the firewall.", - "default": false, - "title": "Ips" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Firewall" - }, - "acceptable_use_policy": { - "type": "boolean", - "description": "Display an Acceptable Use Policy (AUP) and require users to accept it.", - "default": false, - "title": "Acceptable Use Policy" - } - }, - "required": [ - "ipsec_key_salt", - "domain_name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Zscaler" - } - }, - "required": [ - "type", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Cv Pathfinder Internet Exit Policies" - }, - "cv_pathfinder_regions": { - "description": "Define the CV Pathfinder hierarchy.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "id": { - "type": "integer", - "description": "The region ID must be unique for the whole WAN deployment.", - "minimum": 1, - "maximum": 255, - "title": "ID" - }, - "sites": { - "type": "array", - "description": "All sites are placed in a default zone \"-ZONE\" with ID 1.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The site name.", - "minLength": 1, - "maxLength": 128, - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "id": { - "type": "integer", - "description": "The site ID must be unique within a zone.\nGiven that all the sites are placed in a zone named after the region, the site ID must be unique within a region.", - "minimum": 1, - "maximum": 10000, - "title": "ID" - }, - "location": { - "type": "string", - "description": "Location as a string is resolved on Cloudvision.", - "title": "Location" - }, - "site_contact": { - "type": "string", - "title": "Site Contact" - }, - "site_after_hours_contact": { - "type": "string", - "title": "Site After Hours Contact" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "description": "Site name and ID." - }, - "title": "Sites" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "description": "Region name and ID." - }, - "title": "Cv Pathfinder Regions" - }, - "cv_server": { - "description": "PREVIEW: These keys are in preview mode.\n\nHostname or IP address of CloudVision host. Ex. \"www.arista.io\" for CVaaS.\nFor `eos_designs` this variable is only used for the WAN Internet-exit integration with Zscaler.\nThe same variable name is also used by the `cv_deploy` role, and will override the value of `ansible_host` on inventory 'cloudvision' host.\nMake sure to set it in a common group_vars file.", - "type": "string", - "title": "Cv Server" - }, - "cv_tags_topology_type": { - "description": "PREVIEW: This key is currently not supported\nDevice type that CloudVision should use when generating the Topology. Defaults to the setting under node_type_keys.", - "type": "string", - "enum": [ - "leaf", - "spine", - "core", - "edge" - ], - "title": "Cv Tags Topology Type" - }, - "cv_token": { - "description": "PREVIEW: These keys are in preview mode.\n\nService account token as defined on CloudVision. This value should be using Ansible Vault.\nFor `eos_designs` this variable is only used for the WAN Internet-exit integration with Zscaler.\nThe same variable name is also used by the `cv_deploy` role, and will override the value of `ansible_password` on inventory 'cloudvision' host.\nMake sure to set it in a common group_vars file.", - "type": "string", - "title": "Cv Token" - }, - "cv_topology": { - "type": "array", - "description": "Generate AVD configurations directly from the given CloudVision topology.\nActivate this feature by setting `use_cv_topology` to `true`.\nRequires `default_interfaces` to be set for the relevant platforms and node types to detect the proper interface roles automatically.\nNeighbor hostnames must match the inventory hostnames of the AVD inventory to be taken into consideration.", - "items": { - "type": "object", - "properties": { - "hostname": { - "type": "string", - "title": "Hostname" - }, - "platform": { - "type": "string", - "title": "Platform" - }, - "interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "neighbor": { - "type": "string", - "title": "Neighbor" - }, - "neighbor_interface": { - "type": "string", - "title": "Neighbor Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Interfaces" - } - }, - "required": [ - "platform", - "interfaces", - "hostname" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Cv Topology" - }, - "cvp_ingestauth_key": { - "type": "string", - "description": "On-premise CVP ingest auth key. If set, TerminAttr will be configured with key-based authentication for on-premise CVP.\nIf not set, TerminAttr will be configured with certificate based authentication:\n- On-premise using token onboarding. Default token path is '/tmp/token'.\n- CVaaS using token-secure onboarding. Default token path is '/tmp/cv-onboarding-token'.\nToken must be copied to the device first.", - "title": "CVP Ingestauth Key" - }, - "cvp_instance_ip": { - "type": "string", - "description": "IPv4 address or DNS name for CloudVision.\nThis variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead.", - "deprecated": true, - "title": "CVP Instance IP" - }, - "cvp_instance_ips": { - "type": "array", - "description": "List of IPv4 addresses or DNS names for CloudVision.\nFor on-premise CloudVision enter all the nodes of the cluster.\nFor CloudVision as a Service enter the DNS name of the instance.\n`eos_designs` only supports one CloudVision cluster.\n", - "items": { - "type": "string", - "description": "IPv4 address or DNS name for CloudVision." - }, - "title": "CVP Instance Ips" - }, - "cvp_token_file": { - "type": "string", - "description": "cvp_token_file is the path to the token file on the switch.\nIf not set the default locations for on-premise or CVaaS will be used.\nSee cvp_ingestauth_key for details.", - "title": "CVP Token File" - }, - "dc_name": { - "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- HER Overlay DC scoped flood lists: `overlay_her_flood_list_scope: dc` (Required)\n", - "type": "string", - "title": "DC Name" - }, - "default_igmp_snooping_enabled": { - "description": "When set to false, disables IGMP snooping at fabric level and overrides per vlan settings.\n", - "type": "boolean", - "default": true, - "title": "Default IGMP Snooping Enabled" - }, - "default_interface_mtu": { - "type": "integer", - "description": "Default interface MTU configured on EOS under \"interface defaults\".\nCan be overridden per platform under platform settings.\n", - "minimum": 68, - "maximum": 65535, - "title": "Default Interface MTU" - }, - "default_interfaces": { - "type": "array", - "description": "Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).\n", - "items": { - "type": "object", - "properties": { - "types": { - "type": "array", - "description": "List of node type keys.", - "items": { - "type": "string" - }, - "title": "Types" - }, - "platforms": { - "type": "array", - "description": "List of platform families.\nThis is defined as a Python regular expression that matches the full platform type.\n", - "items": { - "type": "string", - "description": "Arista platform family regular expression." - }, - "title": "Platforms" - }, - "uplink_interfaces": { - "type": "array", - "description": "List of uplink interfaces or uplink interface ranges.", - "items": { - "type": "string", - "description": "Interface range or interface." - }, - "title": "Uplink Interfaces" - }, - "mlag_interfaces": { - "type": "array", - "description": "List of MLAG interfaces or MLAG interface ranges.", - "items": { - "type": "string", - "description": "Interface range or interface." - }, - "title": "MLAG Interfaces" - }, - "downlink_interfaces": { - "type": "array", - "description": "List of downlink interfaces or downlink interface ranges.", - "items": { - "type": "string", - "description": "Interface range or interface." - }, - "title": "Downlink Interfaces" - } - }, - "required": [ - "types", - "platforms" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Default Interfaces" - }, - "default_mgmt_method": { - "type": "string", - "description": "`default_mgmt_method` controls the default VRF and source interface used for the following management and monitoring protocols configured with `eos_designs`:\n - `ntp_settings`\n - `sflow_settings`\n\n`oob` means the protocols will be configured with the VRF set by `mgmt_interface_vrf` and `mgmt_interface` as the source interface.\n`inband` means the protocols will be configured with the VRF set by `inband_mgmt_vrf` and `inband_mgmt_interface` as the source interface.\n`none` means the VRF and or interface must be manually set for each protocol.\nThis can be overridden under the settings for each protocol.\n", - "enum": [ - "oob", - "inband", - "none" - ], - "default": "oob", - "title": "Default Management Method" - }, - "default_node_types": { - "type": "array", - "description": "Uses hostname matches against a regular expression to determine the node type.", - "items": { - "type": "object", - "properties": { - "node_type": { - "type": "string", - "description": "Resulting node type when regex matches.", - "title": "Node Type" - }, - "match_hostnames": { - "type": "array", - "description": "Regular expressions to match against hostnames.", - "items": { - "type": "string", - "description": "Regex needs to match full hostname (i.e. is bounded by ^ and $ elements)." - }, - "title": "Match Hostnames" - } - }, - "required": [ - "match_hostnames", - "node_type" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Default Node Types" - }, - "design": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "By setting the design.type variable, the default node-types and templates described in these documents will be used.\n", - "enum": [ - "l3ls-evpn", - "mpls", - "l2ls" - ], - "default": "l3ls-evpn", - "title": "Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Design" - }, - "enable_trunk_groups": { - "type": "boolean", - "description": "Enable Trunk Group support across eos_designs.\nWarning: Because of the nature of the EOS Trunk Group feature, enabling this is \"all or nothing\".\n*All* vlans and *all* trunks towards connected endpoints must be using trunk groups as well.\nIf trunk groups are not assigned to a trunk, no vlans will be enabled on that trunk.\nSee \"Details on enable_trunk_groups\" below before enabling this feature.\n", - "default": false, - "title": "Enable Trunk Groups" - }, - "eos_designs_custom_templates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "template": { - "type": "string", - "description": "Template file.", - "title": "Template" - }, - "options": { - "description": "Template options.", - "type": "object", - "properties": { - "list_merge": { - "type": "string", - "description": "Merge strategy for lists.", - "default": "append_rp", - "title": "List Merge" - }, - "strip_empty_keys": { - "type": "boolean", - "description": "Filter out keys from the generated output if value is null/none/undefined.", - "default": true, - "title": "Strip Empty Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Options" - } - }, - "required": [ - "template" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "EOS Designs Custom Templates" - }, - "eos_designs_documentation": { - "description": "Control fabric documentation generation.\n", - "type": "object", - "properties": { - "connected_endpoints": { - "description": "Generate fabric-wide documentation for connected endpoints.\n", - "type": "boolean", - "default": false, - "title": "Connected Endpoints" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EOS Designs Documentation" - }, - "event_handlers": { - "type": "array", - "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Event Handler Name.", - "title": "Name" - }, - "action_type": { - "type": "string", - "enum": [ - "bash", - "increment", - "log" - ], - "title": "Action Type" - }, - "action": { - "type": "string", - "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", - "deprecated": true, - "title": "Action" - }, - "actions": { - "type": "object", - "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", - "properties": { - "bash_command": { - "type": "string", - "description": "Define BASH command action. Command could be multiline also.", - "title": "Bash Command" - }, - "log": { - "type": "boolean", - "description": "Log a message when the event is triggered.", - "title": "Log" - }, - "increment_device_health_metric": { - "type": "string", - "description": "Name of device-health metric.", - "title": "Increment Device Health Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Actions" - }, - "delay": { - "type": "integer", - "description": "Event-handler delay in seconds.\n", - "title": "Delay" - }, - "trigger": { - "type": "string", - "description": "Configure event trigger condition.\n", - "enum": [ - "on-boot", - "on-counters", - "on-intf", - "on-logging", - "on-maintenance", - "on-startup-config", - "vm-tracer vm" - ], - "title": "Trigger" - }, - "trigger_on_counters": { - "type": "object", - "properties": { - "condition": { - "type": "string", - "description": "Set the logical expression to evaluate.", - "title": "Condition" - }, - "granularity_per_source": { - "type": "boolean", - "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", - "title": "Granularity Per Source" - }, - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Counters" - }, - "trigger_on_logging": { - "type": "object", - "properties": { - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages.", - "title": "Regex" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Logging" - }, - "trigger_on_intf": { - "type": "object", - "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", - "properties": { - "interface": { - "type": "string", - "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", - "title": "Interface" - }, - "ip": { - "type": "boolean", - "description": "Action is triggered upon changes to interface IP address assignment.", - "title": "IP" - }, - "ipv6": { - "type": "boolean", - "description": "Action is triggered upon changes to interface ipv6 address assignment.", - "title": "IPv6" - }, - "operstatus": { - "type": "boolean", - "description": "Action is triggered upon changes to interface operStatus.", - "title": "Operstatus" - } - }, - "required": [ - "interface" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Intf" - }, - "trigger_on_maintenance": { - "description": "Settings required for trigger 'on-maintenance'.", - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "enter", - "exit" - ], - "title": "Operation" - }, - "bgp_peer": { - "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", - "type": "string", - "title": "BGP Peer" - }, - "action": { - "type": "string", - "description": "Action for maintenance operation.", - "enum": [ - "after", - "before", - "all", - "begin", - "end" - ], - "title": "Action" - }, - "stage": { - "type": "string", - "description": "Action is triggered after/before specified stage.", - "enum": [ - "bgp", - "linkdown", - "mlag", - "ratemon" - ], - "title": "Stage" - }, - "vrf": { - "type": "string", - "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", - "title": "VRF" - }, - "interface": { - "type": "string", - "description": "Trigger condition occurs on maintenance operation of specified interface.", - "title": "Interface" - }, - "unit": { - "type": "string", - "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", - "title": "Unit" - } - }, - "required": [ - "operation", - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Maintenance" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", - "deprecated": true, - "title": "Regex" - }, - "asynchronous": { - "type": "boolean", - "default": false, - "description": "Set the action to be non-blocking.\n", - "title": "Asynchronous" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Event Handlers" - }, - "evpn_ebgp_gateway_inter_domain": { - "type": "boolean", - "title": "EVPN Ebgp Gateway Inter Domain" - }, - "evpn_ebgp_gateway_multihop": { - "description": "Default of 15, considering a large value to avoid BGP reachability issues in very complex DCI networks.\nAdapt the value for your specific topology.\n", - "type": "integer", - "default": 15, - "title": "EVPN Ebgp Gateway Multihop" - }, - "evpn_ebgp_multihop": { - "description": "Default of 3, the recommended value for a 3 stage spine and leaf topology.\nSet to a higher value to allow for very large and complex topologies.\n", - "type": "integer", - "default": 3, - "title": "EVPN Ebgp Multihop" - }, - "evpn_hostflap_detection": { - "type": "object", - "properties": { - "enabled": { - "description": "If set to false it will disable EVPN host-flap detection.", - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "threshold": { - "description": "Minimum number of MAC moves that indicate a MAC duplication issue.", - "type": "integer", - "default": 5, - "title": "Threshold" - }, - "window": { - "description": "Time (in seconds) to detect a MAC duplication issue.", - "type": "integer", - "default": 180, - "title": "Window" - }, - "expiry_timeout": { - "description": "Time (in seconds) to purge a MAC duplication issue.", - "type": "integer", - "title": "Expiry Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Hostflap Detection" - }, - "evpn_import_pruning": { - "description": "Enable VPN import pruning (Min. EOS 4.24.2F).\nThe Route Target extended communities carried by incoming VPN paths will be examined.\nIf none of those Route Targets have been configured for import, the path will be immediately discarded.\n", - "type": "boolean", - "default": false, - "title": "EVPN Import Pruning" - }, - "evpn_multicast": { - "type": "boolean", - "description": "General Configuration required for EVPN Multicast. \"evpn_l2_multicast\" or \"evpn_l3_multicast\" must also be configured under the Network Services (tenants).\nRequires \"underlay_multicast: true\" and IGMP snooping enabled globally (default).\nFor MLAG devices Route Distinguisher must be unique since this feature will create multi-vtep configuration.\nWarning !!! For Trident3 based platforms i.e 7050X3, 7300X3, 720XP.\n The Following default platform setting will be configured on 7050X3 and 7300X3: \"platform trident forwarding-table partition flexible exact-match 16384 l2-shared 98304 l3-shared 131072\"\n The Following default platform setting will be configured on 720XP: \"flexible exact-match 16000 l2-shared 18000 l3-shared 22000\"\n All forwarding agents will be restarted when this configuration is applied.\n You can tune the settings by overriding the default variable: \"platform_settings[platforms].trident_forwarding_table_partition:\"\n Please contact an Arista representative for help with determining the appropriate values for your environment.\n", - "default": false, - "title": "EVPN Multicast" - }, - "evpn_overlay_bgp_rtc": { - "description": "Enable Route Target Membership Constraint Address Family on EVPN overlay BGP peerings (Min. EOS 4.25.1F).\nRequires use eBGP as overlay protocol.\n", - "type": "boolean", - "default": false, - "title": "EVPN Overlay BGP Rtc" - }, - "evpn_prevent_readvertise_to_server": { - "description": "Configure route-map on eBGP sessions towards route-servers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in large-scale networks, where convergence will be quicker by not returning all updates received\nfrom Route-server-1 to Router-server-2 just for Route-server-2 to throw them away because of AS Path loop detection.\n", - "type": "boolean", - "default": false, - "title": "EVPN Prevent Readvertise To Server" - }, - "evpn_short_esi_prefix": { - "description": "Configure prefix for \"short_esi\" values.", - "type": "string", - "default": "0000:0000:", - "title": "EVPN Short Esi Prefix" - }, - "evpn_vlan_aware_bundles": { - "description": "Enable VLAN aware bundles for every EVPN MAC-VRF.\nIf set to `true` all SVIs in a VRF are configured in a vlan-aware-bundle using the VRF name as the bundle name. `l2vlans` are bundled in vlan-aware-bundles using the VLAN name as the bundle name.\n\nThe `evpn_vlan_bundle` option under `svis` and `l2vlans` takes precedence and overrides this behavior. Per svi/l2vlan `evpn_vlan_bundle` also works when this setting is disabled which allow mixing vlan-aware-bundles with regular MAC-VRFs.", - "type": "boolean", - "default": false, - "title": "EVPN VLAN Aware Bundles" - }, - "evpn_vlan_bundles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Specify an EVPN vlan-aware-bundle name.\nEVPN vlan-aware-bundles group L2 VLANs and define common settings.\n", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "\"id\" may be used for vlan-aware-bundle RD/RT ID so it should not overlap with l2vlan IDs which are not part of this bundle.\nSee \"overlay_rd_type\" and \"overlay_rt_type\" for details.\n", - "title": "ID" - }, - "rt_override": { - "type": "string", - "description": "By default the MAC VRF bundle RT will be derived from mac_vrf_id_base + bundle_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", - "title": "Rt Override" - }, - "rd_override": { - "type": "string", - "description": "By default the MAC VRF bundle RD will be derived from mac_vrf_id_base + bundle_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", - "title": "Rd Override" - }, - "evpn_l2_multi_domain": { - "type": "boolean", - "description": "Explicitly extend VLAN-Aware Bundle to remote EVPN domains.\nOverrides `.[].evpn_l2_multi_domain`.\n", - "title": "EVPN L2 Multi Domain" - }, - "bgp": { - "type": "object", - "properties": { - "raw_eos_cli": { - "type": "string", - "description": "EOS cli commands rendered on router_bgp.vlans-aware-bundle.\n", - "title": "Raw EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - } - }, - "required": [ - "id", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "EVPN VLAN Bundles" - }, - "fabric_evpn_encapsulation": { - "description": "Should be set to mpls for evpn-mpls scenario.", - "enum": [ - "vxlan", - "mpls" - ], - "default": "vxlan", - "type": "string", - "title": "Fabric EVPN Encapsulation" - }, - "fabric_flow_tracking": { - "type": "object", - "description": "Default enabling of flow-tracking(IPFIX) for various interface types across the fabric.\nFlow Tracking can also be enabled/disabled under each of the specific data models.\nFor general flow-tracking settings see `flow_tracking_settings`.", - "properties": { - "uplinks": { - "description": "Enable flow-tracking on all fabric uplinks.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Uplinks" - }, - "downlinks": { - "description": "Enable flow-tracking on all fabric downlinks.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Downlinks" - }, - "endpoints": { - "description": "Enable flow-tracking on all endpoints ports.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Endpoints" - }, - "l3_edge": { - "description": "Enable flow-tracking on all p2p_links defined under l3_edge.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L3 Edge" - }, - "core_interfaces": { - "description": "Enable flow-tracking on all p2p_links defined under core_interfaces.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Core Interfaces" - }, - "mlag_interfaces": { - "description": "Enable flow-tracking on all MLAG peer interfaces.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG Interfaces" - }, - "l3_interfaces": { - "description": "Enable flow-tracking on all node.l3_interfaces and network-services tenants.vrfs.l3_interfaces.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L3 Interfaces" - }, - "dps_interfaces": { - "description": "Enable flow-tracking on all dps_interfaces.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "DPS Interfaces" - }, - "direct_wan_ha_links": { - "description": "Enable flow-tracking on all direct WAN HA links.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direct Wan Ha Links" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fabric Flow Tracking" - }, - "fabric_ip_addressing": { - "type": "object", - "properties": { - "mlag": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "default": "first_id", - "description": "This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.\nEach MLAG link will have a /31* subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.\nThe offset is calculated using one of the following algorithms:\n - first_id: `(mlag_primary_id - 1) * 2` where `mlag_primary_id` is the ID of the first node defined under the node_group.\n This allocation method will skip every other /31* subnet making it less space efficient than `odd_id`.\n - odd_id: `(odd_id - 1) / 2`. Requires the node_group to have a node with an odd ID and a node with an even ID.\n - same_subnet: the offset will always be zero.\n This allocation method will cause every MLAG link to be addressed with the same /31* subnet.\n\\* - The prefix length is configurable with a default of /31.", - "enum": [ - "first_id", - "odd_id", - "same_subnet" - ], - "title": "Algorithm" - }, - "ipv4_prefix_length": { - "type": "integer", - "default": 31, - "minimum": 1, - "maximum": 31, - "description": "IPv4 prefix length used for MLAG peer-vlan and L3 point-to-point SVIs over the MLAG peer-link.", - "title": "IPv4 Prefix Length" - }, - "ipv6_prefix_length": { - "type": "integer", - "default": 64, - "minimum": 1, - "maximum": 127, - "description": "IPv6 prefix length used for MLAG peer-vlan and L3 point-to-point SVIs over the MLAG peer-link.", - "title": "IPv6 Prefix Length" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG" - }, - "p2p_uplinks": { - "type": "object", - "properties": { - "ipv4_prefix_length": { - "type": "integer", - "default": 31, - "minimum": 1, - "maximum": 31, - "description": "IPv4 prefix length used for L3 point-to-point uplinks.", - "title": "IPv4 Prefix Length" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "P2P Uplinks" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fabric IP Addressing" - }, - "fabric_name": { - "description": "Fabric Name, required to match Ansible Group name covering all devices in the Fabric, **must** be an inventory group name.", - "type": "string", - "title": "Fabric Name" - }, - "fabric_sflow": { - "type": "object", - "description": "Default enabling of sFlow for various interface types across the fabric.\nsFlow can also be enabled/disabled under each of the specific data models.\nFor general sFlow settings see `sflow_settings`.", - "properties": { - "uplinks": { - "description": "Enable sFlow on all fabric uplinks.", - "type": "boolean", - "title": "Uplinks" - }, - "downlinks": { - "description": "Enable sFlow on all fabric downlinks.", - "type": "boolean", - "title": "Downlinks" - }, - "endpoints": { - "description": "Enable sFlow on all endpoints ports.", - "type": "boolean", - "title": "Endpoints" - }, - "l3_edge": { - "description": "Enable sFlow on all p2p_links defined under l3_edge.", - "type": "boolean", - "title": "L3 Edge" - }, - "core_interfaces": { - "description": "Enable sFlow on all p2p_links defined under core_interfaces.", - "type": "boolean", - "title": "Core Interfaces" - }, - "mlag_interfaces": { - "description": "Enable sFlow on all MLAG peer interfaces.", - "type": "boolean", - "title": "MLAG Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fabric Sflow" - }, - "flow_tracking_settings": { - "description": "PREVIEW: This key is currently not supported\n\nDefine the flow tracking parameters for this topology.", - "type": "object", - "properties": { - "sampled": { - "type": "object", - "description": "The options relevant only for flow tracker type sampled.", - "properties": { - "encapsulation": { - "type": "object", - "properties": { - "ipv4_ipv6": { - "type": "boolean", - "title": "IPv4 IPv6" - }, - "mpls": { - "type": "boolean", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation" - }, - "sample": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "default": 10000, - "title": "Sample" - }, - "hardware_offload": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Configure hardware offload for IPv4 traffic.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Configure hardware offload for IPv6 traffic.", - "title": "IPv6" - }, - "threshold_minimum": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "description": "Minimum number of samples.", - "title": "Threshold Minimum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Offload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sampled" - }, - "hardware": { - "type": "object", - "description": "The options relevant only for flow tracker type hardware.", - "properties": { - "record": { - "type": "object", - "properties": { - "format_ipfix_standard_timestamps_counters": { - "type": "boolean", - "description": "Enable software export of IPFIX data records.", - "title": "Format Ipfix Standard Timestamps Counters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracker Name", - "title": "Name" - }, - "sampled": { - "type": "object", - "description": "The options relevant only for flow tracker type sampled.", - "properties": { - "table_size": { - "type": "integer", - "minimum": 1, - "maximum": 614400, - "description": "Maximum number of entries in flow table.\n", - "title": "Table Size" - }, - "record_export": { - "type": "object", - "properties": { - "mpls": { - "type": "boolean", - "description": "Export MPLS forwarding information.", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sampled" - }, - "record_export": { - "type": "object", - "properties": { - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds", - "title": "On Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "default": [ - { - "name": "FLOW-TRACKER", - "record_export": { - "on_inactive_timeout": 70000, - "on_interval": 300000 - }, - "exporters": [ - { - "name": "CV-TELEMETRY", - "collector": { - "host": "127.0.0.1" - }, - "local_interface": "Loopback0", - "template_interval": 3600000 - } - ] - } - ], - "title": "Trackers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking Settings" - }, - "generate_cv_tags": { - "type": "object", - "description": "PREVIEW: This key is currently not supported\nGenerate CloudVision Tags based on AVD data.", - "properties": { - "topology_hints": { - "type": "boolean", - "default": false, - "description": "Enable the generation of CloudVision Topology Tags (hints).", - "title": "Topology Hints" - }, - "interface_tags": { - "description": "List of interface tags that should be generated.", - "type": "array", - "items": { - "type": "object", - "description": "Each tag can either have a static value or a dynamic value sourced from structured configuration.", - "properties": { - "name": { - "description": "Tag name to be assigned to generated tags.", - "type": "string", - "title": "Name" - }, - "data_path": { - "description": "Structured config field/key path to be used to find the value for the tag. Dot notation is supported to reference values inside dictionaries.\nFor Example: 'data_path: channel_group.id' would set the tag with the value of the channel id of the interface. If there is no channel id, the tag is not created.\n`data_path` is ignored if `value` is set.", - "type": "string", - "title": "Data Path" - }, - "value": { - "description": "Value to be assigned to the tag.", - "type": "string", - "title": "Value" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Tags" - }, - "device_tags": { - "description": "List of device tags that should be generated.", - "type": "array", - "items": { - "type": "object", - "description": "Each tag can either have a static value or a dynamic value sourced from structured configuration.", - "properties": { - "name": { - "description": "Tag name to be assigned to generated tags.", - "type": "string", - "title": "Name" - }, - "data_path": { - "description": "Structured config field/key path to be used to find the value for the tag. Dot notation is supported to reference values inside dictionaries.\nFor Example: 'data_path: router_bfd.multihop.interval' would set the tag with the value of the interval for multihop bfd. If this value is not specified in the structured config, the tag is not created.\n`data_path` is ignored if `value` is set.", - "type": "string", - "title": "Data Path" - }, - "value": { - "description": "Value to be assigned to the tag.", - "type": "string", - "title": "Value" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Device Tags" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Generate Cv Tags" - }, - "hardware_counters": { - "type": "object", - "properties": { - "features": { - "type": "array", - "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "acl", - "decap-group", - "directflow", - "ecn", - "flow-spec", - "gre tunnel interface", - "ip", - "mpls interface", - "mpls lfib", - "mpls tunnel", - "multicast", - "nexthop", - "pbr", - "pdp", - "policing interface", - "qos", - "qos dual-rate-policer", - "route", - "routed-port", - "segment-security", - "subinterface", - "tapagg", - "traffic-class", - "traffic-policy", - "vlan", - "vlan-interface", - "vni decap", - "vni encap", - "vtep decap", - "vtep encap" - ], - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "cpu" - ], - "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", - "title": "Direction" - }, - "address_type": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "mac" - ], - "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", - "title": "Address Type" - }, - "layer3": { - "type": "boolean", - "description": "Supported only for the 'ip' feature.\n", - "title": "Layer3" - }, - "vrf": { - "type": "string", - "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "VRF" - }, - "prefix": { - "type": "string", - "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "Prefix" - }, - "units_packets": { - "type": "boolean", - "title": "Units Packets" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Features" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Counters" - }, - "internal_vlan_order": { - "type": "object", - "description": "Internal vlan allocation order and range.", - "properties": { - "allocation": { - "type": "string", - "enum": [ - "ascending", - "descending" - ], - "title": "Allocation" - }, - "range": { - "type": "object", - "properties": { - "beginning": { - "type": "integer", - "description": "First VLAN ID.", - "minimum": 2, - "maximum": 4094, - "title": "Beginning" - }, - "ending": { - "type": "integer", - "description": "Last VLAN ID.", - "minimum": 2, - "maximum": 4094, - "title": "Ending" - } - }, - "required": [ - "beginning", - "ending" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Range" - } - }, - "required": [ - "allocation" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "default": { - "allocation": "ascending", - "range": { - "beginning": 1006, - "ending": 1199 - } - }, - "title": "Internal VLAN Order" - }, - "ipv4_acls": { - "type": "array", - "description": "IPv4 extended access-lists supporting substitution on certain fields.\nThese access-lists can be referenced under node settings `l3_interfaces`, and will only be configured on devices where they are in use.\n\nThe substitution is useful when assigning the same access-list on multiple interfaces,\nbut where certain fields require unique values like the \"interface_ip\" or \"peer_ip\".\nWhen using substitution, the interface name will be appended to the ACL name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list name.\nWhen using substitution for any fields, the interface name will be appended to the ACL name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "description": "This field supports substitution of the fields \"interface_ip\" for SVIs and both \"interface_ip\" and \"peer_ip\" for Layer 3 interfaces.\nAlternatively it can be set with a static value of \"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Source" - }, - "destination": { - "type": "string", - "description": "This field supports substitution of the fields \"interface_ip\" for SVIs and both \"interface_ip\" and \"peer_ip\" for Layer 3 interfaces.\nAlternatively it can be set with a static value of \"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Destination" - }, - "sequence": { - "type": "integer", - "description": "ACL entry sequence number.", - "title": "Sequence" - }, - "remark": { - "type": "string", - "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", - "title": "Remark" - }, - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "description": "ACL action.\nRequired except for remarks.", - "title": "Action" - }, - "protocol": { - "type": "string", - "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", - "title": "Protocol" - }, - "source_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Source Ports Match" - }, - "source_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP source port name or number." - }, - "title": "Source Ports" - }, - "destination_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Destination Ports Match" - }, - "destination_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP destination port name or number." - }, - "title": "Destination Ports" - }, - "tcp_flags": { - "type": "array", - "items": { - "type": "string", - "description": "TCP Flag Name." - }, - "title": "TCP Flags" - }, - "fragments": { - "type": "boolean", - "description": "Match non-head fragment packets.", - "title": "Fragments" - }, - "log": { - "type": "boolean", - "description": "Log matches against this rule.", - "title": "Log" - }, - "ttl": { - "type": "integer", - "description": "TTL value.", - "minimum": 0, - "maximum": 255, - "title": "TTL" - }, - "ttl_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq" - ], - "default": "eq", - "title": "TTL Match" - }, - "icmp_type": { - "type": "string", - "description": "Message type name/number for ICMP packets.", - "title": "ICMP Type" - }, - "icmp_code": { - "type": "string", - "description": "Message code for ICMP packets.", - "title": "ICMP Code" - }, - "nexthop_group": { - "type": "string", - "description": "nexthop-group name.", - "title": "Nexthop Group" - }, - "tracked": { - "type": "boolean", - "description": "Match packets in existing ICMP/UDP/TCP connections.", - "title": "Tracked" - }, - "dscp": { - "type": "string", - "description": "DSCP value or name.", - "title": "DSCP" - }, - "vlan_number": { - "type": "integer", - "title": "VLAN Number" - }, - "vlan_inner": { - "type": "boolean", - "default": false, - "title": "VLAN Inner" - }, - "vlan_mask": { - "type": "string", - "description": "0x000-0xFFF VLAN mask.", - "title": "VLAN Mask" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "description": "ACL Entries.", - "title": "Entries" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv4 Acls" - }, - "ipv6_mgmt_destination_networks": { - "description": "List of IPv6 prefixes to configure as static routes towards the OOB IPv6 Management interface gateway.\nReplaces the default route.\n", - "type": "array", - "items": { - "type": "string", - "description": "IPv6_network/Mask." - }, - "title": "IPv6 Management Destination Networks" - }, - "ipv6_mgmt_gateway": { - "type": "string", - "format": "ipv6", - "description": "OOB Management interface gateway in IPv6 format.\nUsed as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'.\n", - "title": "IPv6 Management Gateway" - }, - "is_deployed": { - "description": "If the device is already deployed in the fabric.\nWhen set to false, interfaces toward this device may be shutdown depending on the `shutdown_interfaces_towards_undeployed_peers` setting.\nFurthermore `eos_config_deploy_cvp` will not attempt to move or apply configurations to the device.\n", - "type": "boolean", - "default": true, - "title": "Is Deployed" - }, - "isis_advertise_passive_only": { - "type": "boolean", - "default": false, - "title": "ISIS Advertise Passive Only" - }, - "isis_area_id": { - "type": "string", - "default": "49.0001", - "title": "ISIS Area ID" - }, - "isis_default_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "default": "level-2", - "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level.\n", - "title": "ISIS Default Circuit Type" - }, - "isis_default_is_type": { - "title": "ISIS Default IS Type", - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "default": "level-2" - }, - "isis_default_metric": { - "type": "integer", - "default": 50, - "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level.\n", - "title": "ISIS Default Metric" - }, - "isis_maximum_paths": { - "description": "Number of path to configure in ECMP for ISIS.", - "type": "integer", - "title": "ISIS Maximum Paths" - }, - "isis_system_id_format": { - "title": "ISIS Default IS System-ID format", - "description": "Configures source for the system-id within the ISIS net id.\nBy default the `id` and `isis_system_id_prefix` fields configured under the node attributes are used to generate the system-id.\n\nIf `underlay_loopback` is selected then all node `isis_system_id_prefix` settings will be ignored and the loopback address will be used to generate the system-id.", - "type": "string", - "enum": [ - "node_id", - "underlay_loopback" - ], - "default": "node_id" - }, - "isis_ti_lfa": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "title": "Enabled" - }, - "protection": { - "type": "string", - "enum": [ - "link", - "node" - ], - "title": "Protection" - }, - "local_convergence_delay": { - "description": "Local convergence delay in milliseconds.", - "type": "integer", - "default": 10000, - "title": "Local Convergence Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ISIS TI LFA" - }, - "l3_edge": { - "type": "object", - "properties": { - "p2p_links_ip_pools": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "P2P pool name.", - "title": "Name" - }, - "ipv4_pool": { - "type": "string", - "description": "IPv4 address/Mask.", - "title": "IPv4 Pool" - }, - "prefix_size": { - "type": "integer", - "description": "Subnet mask size.", - "default": 31, - "minimum": 8, - "maximum": 31, - "title": "Prefix Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "P2P Links IP Pools" - }, - "p2p_links_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "P2P profile name. Any variable supported under `p2p_links` can be inherited from a profile.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", - "title": "ID" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "ip_pool": { - "type": "string", - "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", - "title": "IP Pool" - }, - "subnet": { - "type": "string", - "description": "IPv4 address/Mask. Subnet used on this P2P link.", - "title": "Subnet" - }, - "ip": { - "type": "array", - "description": "Specific IP addresses used on this P2P link.", - "items": { - "type": "string", - "description": "Node IPv4 address/Mask." - }, - "title": "IP" - }, - "ipv6_enable": { - "type": "boolean", - "default": false, - "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", - "title": "IPv6 Enable" - }, - "nodes": { - "type": "array", - "description": "Nodes where this link should be configured.", - "items": { - "type": "string", - "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" - }, - "title": "Nodes" - }, - "interfaces": { - "type": "array", - "description": "Interfaces where this link should be configured and Required unless using port-channels.", - "items": { - "type": "string", - "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" - }, - "title": "Interfaces" - }, - "as": { - "type": "array", - "description": "AS numbers for BGP.\nRequired with bgp peering.\n", - "items": { - "type": "string", - "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." - }, - "title": "As" - }, - "descriptions": { - "type": "array", - "description": "Interface description.", - "items": { - "type": "string" - }, - "title": "Descriptions" - }, - "include_in_underlay_protocol": { - "type": "boolean", - "default": true, - "description": "Add this interface to underlay routing protocol.", - "title": "Include In Underlay Protocol" - }, - "isis_hello_padding": { - "type": "boolean", - "default": false, - "title": "ISIS Hello Padding" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1", - "level-2", - "level-1-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "md5", - "text" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "mpls_ip": { - "type": "boolean", - "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", - "title": "MPLS IP" - }, - "mpls_ldp": { - "type": "boolean", - "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", - "title": "MPLS LDP" - }, - "mtu": { - "type": "integer", - "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", - "title": "MTU" - }, - "bfd": { - "type": "boolean", - "default": false, - "description": "Enable BFD (only considered for BGP).", - "title": "BFD" - }, - "ptp": { - "description": "PTP parameters.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "description": "Enable PTP.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow. Overrides `fabric_sflow` setting.", - "title": "Sflow" - }, - "underlay_multicast": { - "type": "boolean", - "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", - "default": false, - "title": "Underlay Multicast" - }, - "flow_tracking": { - "type": "object", - "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "qos_profile": { - "type": "string", - "description": "QOS service profile.", - "title": "QOS Profile" - }, - "macsec_profile": { - "type": "string", - "description": "MAC security profile.", - "title": "Macsec Profile" - }, - "port_channel": { - "description": "Port-channel parameters.", - "type": "object", - "properties": { - "mode": { - "type": "string", - "default": "active", - "title": "Mode" - }, - "nodes_child_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "node": { - "type": "string", - "title": "Node" - }, - "interfaces": { - "type": "array", - "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", - "title": "Channel ID" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "node" - ] - }, - "title": "Nodes Child Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "routing_protocol": { - "type": "string", - "enum": [ - "ebgp" - ], - "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", - "title": "Routing Protocol" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "P2P Links Profiles" - }, - "p2p_links": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "description": "Nodes where this link should be configured.", - "items": { - "type": "string", - "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n" - }, - "title": "Nodes" - }, - "profile": { - "type": "string", - "description": "P2P profile name. Profile defined under p2p_profiles.", - "title": "Profile" - }, - "id": { - "type": "integer", - "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n", - "title": "ID" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "ip_pool": { - "type": "string", - "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.", - "title": "IP Pool" - }, - "subnet": { - "type": "string", - "description": "IPv4 address/Mask. Subnet used on this P2P link.", - "title": "Subnet" - }, - "ip": { - "type": "array", - "description": "Specific IP addresses used on this P2P link.", - "items": { - "type": "string", - "description": "Node IPv4 address/Mask." - }, - "title": "IP" - }, - "ipv6_enable": { - "type": "boolean", - "default": false, - "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).", - "title": "IPv6 Enable" - }, - "interfaces": { - "type": "array", - "description": "Interfaces where this link should be configured and Required unless using port-channels.", - "items": { - "type": "string", - "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n" - }, - "title": "Interfaces" - }, - "as": { - "type": "array", - "description": "AS numbers for BGP.\nRequired with bgp peering.\n", - "items": { - "type": "string", - "description": "The values can be like [\"node_a_as\", \"node_b_as\"]." - }, - "title": "As" - }, - "descriptions": { - "type": "array", - "description": "Interface description.", - "items": { - "type": "string" - }, - "title": "Descriptions" - }, - "include_in_underlay_protocol": { - "type": "boolean", - "default": true, - "description": "Add this interface to underlay routing protocol.", - "title": "Include In Underlay Protocol" - }, - "isis_hello_padding": { - "type": "boolean", - "default": false, - "title": "ISIS Hello Padding" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1", - "level-2", - "level-1-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "md5", - "text" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "mpls_ip": { - "type": "boolean", - "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.", - "title": "MPLS IP" - }, - "mpls_ldp": { - "type": "boolean", - "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.", - "title": "MPLS LDP" - }, - "mtu": { - "type": "integer", - "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.", - "title": "MTU" - }, - "bfd": { - "type": "boolean", - "default": false, - "description": "Enable BFD (only considered for BGP).", - "title": "BFD" - }, - "ptp": { - "description": "PTP parameters.", - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "description": "Enable PTP.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow. Overrides `fabric_sflow` setting.", - "title": "Sflow" - }, - "underlay_multicast": { - "type": "boolean", - "description": "Enable PIM sparse mode. Requires `include_in_underlay_protocol` and the global `underlay_multicast` to be `true`.", - "default": false, - "title": "Underlay Multicast" - }, - "flow_tracking": { - "type": "object", - "description": "Enable flow-tracking. Overrides `fabric_flow_tracking` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "qos_profile": { - "type": "string", - "description": "QOS service profile.", - "title": "QOS Profile" - }, - "macsec_profile": { - "type": "string", - "description": "MAC security profile.", - "title": "Macsec Profile" - }, - "port_channel": { - "description": "Port-channel parameters.", - "type": "object", - "properties": { - "mode": { - "type": "string", - "default": "active", - "title": "Mode" - }, - "nodes_child_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "node": { - "type": "string", - "title": "Node" - }, - "interfaces": { - "type": "array", - "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].", - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID. If no channel_id is specified, an id is generated from the first switch port in the port channel.", - "title": "Channel ID" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "node" - ] - }, - "title": "Nodes Child Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "routing_protocol": { - "type": "string", - "enum": [ - "ebgp" - ], - "description": "Enables deviation of the routing protocol used on this link from the fabric underlay default.\n- ebgp: Enforce plain IPv4 BGP peering", - "title": "Routing Protocol" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for interfaces.\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.", - "title": "Structured Config" - } - }, - "required": [ - "nodes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "P2P Links" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L3 Edge" - }, - "l3_interface_profiles": { - "type": "array", - "description": "Profiles to inherit common settings for l3_interfaces defined under the node type key.\nThese profiles will *not* work for `l3_interfaces` defined under `vrfs`.", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile.", - "title": "Profile" - }, - "name": { - "type": "string", - "description": "Ethernet interface name like 'Ethernet2' or subinterface name like 'Ethernet2.42'.\nFor a subinterface, the parent physical interface is automatically created.", - "pattern": "Ethernet[\\d/]+(.[\\d]+)?", - "title": "Name" - }, - "description": { - "type": "string", - "description": "Interface description.\nIf not set a default description will be configured with '[[ ]]'.", - "title": "Description" - }, - "ip_address": { - "type": "string", - "description": "Node IPv4 address/Mask or 'dhcp'.", - "title": "IP Address" - }, - "dhcp_ip": { - "type": "string", - "description": "When the `ip_address` is `dhcp`, this optional field allows to indicate the expected\nIPv4 address (without mask) to be allocated on the interface if known.\nThis is not rendered in the configuration but can be used for substitution of 'interface_ip' in the Access-list\nset under `ipv4_acl_in` and `ipv4_acl_out`.", - "title": "DHCP IP" - }, - "public_ip": { - "type": "string", - "description": "Node IPv4 address (no mask).\n\nThis is used to get the public IP (if known) when the device is behind NAT.\nThis is only used for `wan_rr` routers (AutoVPN RRs and Pathfinders) to determine the Public IP\nwith the following preference:\n `wan_route_servers.path_groups.interfaces.ip_address`\n -> `l3_interfaces.public_ip`\n -> `l3_interfaces.ip_address`\n\nThe determined Public IP is used by WAN routers when peering with this interface.", - "title": "Public IP" - }, - "encapsulation_dot1q_vlan": { - "description": "For subinterfaces the dot1q vlan is derived from the interface name by default, but can also be specified.", - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Encapsulation Dot1Q VLAN" - }, - "dhcp_accept_default_route": { - "type": "boolean", - "default": true, - "description": "Accept a default route from DHCP if `ip_address` is set to `dhcp`.", - "title": "DHCP Accept Default Route" - }, - "enabled": { - "type": "boolean", - "default": true, - "description": "Enable or Shutdown the interface.", - "title": "Enabled" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "peer": { - "type": "string", - "description": "The peer device name. Used for description and documentation.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "The peer device interface. Used for description and documentation.", - "title": "Peer Interface" - }, - "peer_ip": { - "type": "string", - "description": "The peer device IPv4 address (no mask). Used as default route gateway if `set_default_route` is true and `ip` is an IP address.", - "title": "Peer IP" - }, - "bgp": { - "type": "object", - "description": "Enforce IPv4 BGP peering for the peer", - "properties": { - "peer_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Peer As" - }, - "ipv4_prefix_list_in": { - "type": "string", - "description": "Prefix List Name. Accept routes for only these prefixes from the peer.\nRequired for wan interfaces.", - "title": "IPv4 Prefix List In" - }, - "ipv4_prefix_list_out": { - "type": "string", - "description": "Prefix List Name. Advertise routes for only these prefixes.\nIf not specified, nothing would be advertised.", - "title": "IPv4 Prefix List Out" - } - }, - "required": [ - "peer_as" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ipv4_acl_in": { - "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports field substitution for \"interface_ip\" and \"peer_ip\".\nRequired for all WAN interfaces (`wan_carrier` is set) unless the carrier is marked as 'trusted' under `wan_carriers`.", - "type": "string", - "title": "IPv4 Acl In" - }, - "ipv4_acl_out": { - "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports field substitution for \"interface_ip\" and \"peer_ip\".", - "type": "string", - "title": "IPv4 Acl Out" - }, - "static_routes": { - "description": "Configure IPv4 static routes pointing to `peer_ip`.", - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4_network/Mask.", - "title": "Prefix" - } - }, - "required": [ - "prefix" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Routes" - }, - "qos_profile": { - "type": "string", - "description": "QOS service profile.", - "title": "QOS Profile" - }, - "wan_carrier": { - "type": "string", - "description": "The WAN carrier this interface is connected to.\nThis is used to infer the path-groups in which this interface should be configured.\nUnless the carrier is marked as 'trusted' under `wan_carriers`, `ipv4_acl_in` is also required on all WAN interfaces.", - "title": "Wan Carrier" - }, - "wan_circuit_id": { - "type": "string", - "description": "The WAN circuit ID for this interface.\nThis is not rendered in the configuration but used for WAN designs.", - "title": "Wan Circuit ID" - }, - "connected_to_pathfinder": { - "type": "boolean", - "default": true, - "description": "For a WAN interface (`wan_carrier` is set), allow to disable the static tunnel towards Pathfinders.", - "title": "Connected To Pathfinder" - }, - "cv_pathfinder_internet_exit": { - "description": "PREVIEW: This key is in preview mode", - "type": "object", - "properties": { - "policies": { - "type": "array", - "description": "List of Internet-exit policies using this interface as exit.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Internet-exit policy name.", - "title": "Name" - }, - "tunnel_interface_numbers": { - "type": "string", - "description": "Number range to use for Tunnel interfaces to an internet-exit service provider using this local interface.\nExamples: '1-3' or '100,200,300'", - "title": "Tunnel Interface Numbers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cv Pathfinder Internet Exit" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "flow_tracking": { - "type": "object", - "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.l3_interfaces` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for the Ethernet interface.", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "load_interval": { - "type": "integer", - "minimum": 0, - "maximum": 600, - "description": "Interval in seconds for updating interface counters.", - "title": "Load Interval" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "native_vlan": { - "type": "integer", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "tagged phone", - "untagged", - "untagged phone" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q", - "port-channel-member" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "address_locking": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Enable address locking for IPv4.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Enable address locking for IPv6.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "desired", - "on", - "off" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "error_correction_encoding": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "fire_code": { - "type": "boolean", - "title": "Fire Code" - }, - "reed_solomon": { - "type": "boolean", - "title": "Reed Solomon" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Error Correction Encoding" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulations are all optional and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask or \"dhcp\".", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string" - }, - "title": "IP Address Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "dhcp_client_accept_default_route": { - "type": "boolean", - "description": "Install default-route obtained via DHCP.", - "title": "DHCP Client Accept Default Route" - }, - "dhcp_server_ipv4": { - "type": "boolean", - "description": "Enable IPv4 DHCP server.", - "title": "DHCP Server IPv4" - }, - "dhcp_server_ipv6": { - "type": "boolean", - "description": "Enable IPv6 DHCP server.", - "title": "DHCP Server IPv6" - }, - "ip_helpers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_nat": { - "type": "object", - "properties": { - "service_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Service Profile" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "multicast": { - "type": "object", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "mac_security": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Security" - }, - "tcp_mss_ceiling": { - "type": "object", - "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", - "properties": { - "ipv4_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv4 Segment Size" - }, - "ipv6_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv6 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "channel_group": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "mode": { - "type": "string", - "enum": [ - "on", - "active", - "passive" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Channel Group" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "poe": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "profile": { - "type": "string", - "description": "Interface profile.", - "title": "Profile" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "congestion_drops": { - "type": "boolean", - "title": "Congestion Drops" - }, - "spanning_tree": { - "type": "boolean", - "title": "Spanning Tree" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "dot1x": { - "type": "object", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Value can be 60-4294967295 or 'server'.", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - }, - "eapol": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "authentication_failure_fallback_mba": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure Fallback Mba" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Eapol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "priority_flow_control": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "priorities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "title": "No Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "priority" - ] - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "lacp_timer": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "fast", - "normal" - ], - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 3000, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "lacp_port_priority": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "LACP Port Priority" - }, - "transceiver": { - "type": "object", - "properties": { - "frequency": { - "type": "string", - "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", - "title": "Frequency" - }, - "frequency_unit": { - "type": "string", - "enum": [ - "ghz" - ], - "description": "Unit of Transceiver Laser Frequency.", - "title": "Frequency Unit" - }, - "media": { - "type": "object", - "properties": { - "override": { - "type": "string", - "description": "Transceiver type.", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Media" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transceiver" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "sync_e": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "priority": { - "type": "string", - "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "port_profile": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Port Profile" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Uc TX Queues" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "max", - "max_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "TX Queues" - }, - "vrrp_ids": { - "type": "array", - "description": "VRRP model.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "switchport": { - "type": "object", - "properties": { - "port_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "mac_address_maximum": { - "type": "object", - "description": "Maximum number of MAC addresses allowed on the interface.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable port level check for port security (only in violation 'shutdown' mode).", - "title": "Disabled" - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "MAC address limit.", - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Maximum" - }, - "violation": { - "type": "object", - "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "shutdown", - "protect" - ], - "description": "Configure port security mode.", - "title": "Mode" - }, - "protect_log": { - "type": "boolean", - "description": "Log new addresses seen after limit is reached in protect mode.", - "title": "Protect Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Violation" - }, - "vlan_default_mac_address_maximum": { - "type": "integer", - "minimum": 0, - "maximum": 1000, - "description": "Default maximum MAC addresses for all VLANs on this interface.", - "title": "VLAN Default MAC Address Maximum" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", - "title": "Range" - }, - "mac_address_maximum": { - "type": "integer", - "title": "MAC Address Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "range" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Security" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "profile" - ] - }, - "title": "L3 Interface Profiles" - }, - "local_users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Username.", - "type": "string", - "title": "Name" - }, - "disabled": { - "type": "boolean", - "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", - "title": "Disabled" - }, - "privilege": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Initial privilege level with local EXEC authorization.\n", - "title": "Privilege" - }, - "role": { - "type": "string", - "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", - "title": "Role" - }, - "sha512_password": { - "type": "string", - "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", - "title": "SHA512 Password" - }, - "no_password": { - "type": "boolean", - "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", - "title": "No Password" - }, - "ssh_key": { - "type": "string", - "title": "SSH Key" - }, - "secondary_ssh_key": { - "type": "string", - "title": "Secondary SSH Key" - }, - "shell": { - "type": "string", - "description": "Specify shell for the user.\n", - "enum": [ - "/bin/bash", - "/bin/sh", - "/sbin/nologin" - ], - "title": "Shell" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Users" - }, - "mac_address_table": { - "type": "object", - "description": "MAC address-table aging time.\nUse to change the EOS default of 300.\n", - "properties": { - "aging_time": { - "type": "integer", - "description": "Aging time in seconds 10-1000000.\nEnter 0 to disable aging.\n", - "minimum": 0, - "maximum": 1000000, - "title": "Aging Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Table" - }, - "management_eapi": { - "description": "Default is HTTPS management eAPI enabled.\nThe VRF is set to < mgmt_interface_vrf >.\n", - "type": "object", - "properties": { - "enable_http": { - "type": "boolean", - "default": false, - "title": "Enable HTTP" - }, - "enable_https": { - "type": "boolean", - "default": true, - "title": "Enable Https" - }, - "default_services": { - "type": "boolean", - "title": "Default Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Eapi" - }, - "mgmt_destination_networks": { - "type": "array", - "description": "List of IPv4 prefixes to configure as static routes towards the OOB Management interface gateway.\nReplaces the default route.", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "Management Destination Networks" - }, - "mgmt_gateway": { - "type": "string", - "description": "OOB Management interface gateway in IPv4 format.\nUsed as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.\n", - "title": "Management Gateway" - }, - "mgmt_interface": { - "type": "string", - "default": "Management1", - "description": "OOB Management interface.", - "title": "Management Interface" - }, - "mgmt_interface_description": { - "type": "string", - "description": "Management interface description.\n", - "default": "oob_management", - "title": "Management Interface Description" - }, - "mgmt_interface_vrf": { - "type": "string", - "default": "MGMT", - "description": "OOB Management VRF.", - "title": "Management Interface VRF" - }, - "mgmt_vrf_routing": { - "type": "boolean", - "default": false, - "description": "Configure IP routing for the OOB Management VRF.", - "title": "Management VRF Routing" - }, - "mlag_ibgp_peering_vrfs": { - "type": "object", - "description": "On mlag leafs, an SVI interface is defined per vrf, to establish iBGP peering (required when there are MLAG leafs in topology).\nThe SVI id will be derived from the base vlan defined: mlag_ibgp_peering_vrfs.base_vlan + (vrf_id or vrf_vni) - 1.\nDepending on the values of vrf_id / vrf_vni it may be required to adjust the base_vlan to avoid overlaps or invalid vlan ids.\nThe SVI ip address derived from mlag_l3_peer_ipv4_pool is re-used across all iBGP peerings.\n", - "properties": { - "base_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4093, - "default": 3000, - "title": "Base VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG Ibgp Peering VRFs" - }, - "mlag_on_orphan_port_channel_downlink": { - "type": "boolean", - "description": "If `true` (default) an MLAG ID will always be configured on a Port-Channel downlink even if the downlink is only on one node in the MLAG pair.\nIf `false` an MLAG ID will only be configured on Port-Channel downlinks dual-homed to two MLAG switches.\nNote the default value will change to `false` in AVD version 5.0", - "default": true, - "title": "MLAG On Orphan Port Channel Downlink" - }, - "name_servers": { - "type": "array", - "description": "List of DNS servers. The VRF is set to < mgmt_interface_vrf >.", - "items": { - "type": "string", - "description": "IPv4 or IPv6 address." - }, - "title": "Name Servers" - }, - "network_ports": { - "type": "array", - "items": { - "type": "object", - "properties": { - "switches": { - "type": "array", - "description": "Regex matching the full hostname of one or more switches.\nThe regular expression must match the full hostname.\n", - "items": { - "type": "string" - }, - "title": "Switches" - }, - "switch_ports": { - "type": "array", - "description": "List of ranges using AVD range_expand syntax.\nFor example:\n\nswitch_ports:\n - Ethernet1\n - Ethernet2-48\n\nAll switch_ports ranges are expanded into individual port configurations.\n\nFor more details and examples of the `range_expand` syntax, see the [`arista.avd.range_expand` documentation](../../../docs/plugins/Filter_plugins/range_expand.md).\n", - "items": { - "type": "string" - }, - "title": "Switch Ports" - }, - "description": { - "type": "string", - "description": "Description to be used on all ports.", - "title": "Description" - }, - "speed": { - "type": "string", - "description": "Set adapter speed in the format `` or `forced ` or `auto `.\nIf not specified speed will be auto.\n", - "title": "Speed" - }, - "profile": { - "type": "string", - "description": "Port-profile name to inherit configuration.", - "title": "Profile" - }, - "enabled": { - "type": "boolean", - "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n", - "default": true, - "title": "Enabled" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "description": "Interface mode.", - "title": "Mode" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "native_vlan": { - "type": "integer", - "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n", - "minimum": 1, - "maximum": 4094, - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.", - "title": "Native VLAN Tag" - }, - "phone_vlan": { - "type": "integer", - "description": "Phone VLAN for a mode `trunk phone` port.\nRequires `mode: trunk phone` to be set.", - "minimum": 1, - "maximum": 4094, - "title": "Phone VLAN" - }, - "phone_trunk_mode": { - "type": "string", - "enum": [ - "tagged", - "untagged", - "tagged phone", - "untagged phone" - ], - "description": "Specify if the phone traffic is tagged or untagged.\nIf both data and phone traffic are untagged, MAC-Based VLAN Assignment (MBVA) is used, if supported by the model of switch.", - "title": "Phone Trunk Mode" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n", - "title": "Trunk Groups" - }, - "vlans": { - "type": "string", - "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.", - "title": "VLANs" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "received", - "send", - "on" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "qos_profile": { - "type": "string", - "description": "QOS profile name.", - "title": "QOS Profile" - }, - "ptp": { - "type": "object", - "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "title": "Enabled" - }, - "endpoint_role": { - "type": "string", - "default": "follower", - "enum": [ - "bmca", - "default", - "follower" - ], - "title": "Endpoint Role" - }, - "profile": { - "type": "string", - "default": "aes67-r16-2016", - "enum": [ - "aes67", - "aes67-r16-2016", - "smpte2059-2" - ], - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Configures sFlow on the interface. Overrides `fabric_sflow.endpoints` setting.", - "title": "Sflow" - }, - "flow_tracking": { - "type": "object", - "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.endpoints` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "link_tracking": { - "type": "object", - "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Tracking" - }, - "dot1x": { - "type": "object", - "description": "802.1x", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Range 60-4294967295 or \"server\".", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "poe": { - "type": "object", - "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "storm_control": { - "type": "object", - "description": "Storm control settings applied on port toward the endpoint.", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "monitor_sessions": { - "type": "array", - "description": "Used to define switchports as source or destination for monitoring sessions.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Session name.", - "title": "Name" - }, - "role": { - "type": "string", - "enum": [ - "source", - "destination" - ], - "title": "Role" - }, - "source_settings": { - "type": "object", - "properties": { - "direction": { - "type": "string", - "enum": [ - "rx", - "tx", - "both" - ], - "title": "Direction" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL name.", - "type": "string", - "title": "Name" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Settings" - }, - "session_settings": { - "type": "object", - "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n", - "properties": { - "encapsulation_gre_metadata_tx": { - "type": "boolean", - "title": "Encapsulation Gre Metadata TX" - }, - "header_remove_size": { - "type": "integer", - "description": "Number of bytes to remove from header.", - "title": "Header Remove Size" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL name.", - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - }, - "rate_limit_per_ingress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Ingress Chip" - }, - "rate_limit_per_egress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Egress Chip" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "truncate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "size": { - "type": "integer", - "description": "Size in bytes.", - "title": "Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Truncate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Session Settings" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Monitor Sessions" - }, - "ethernet_segment": { - "type": "object", - "description": "Settings for all or single-active EVPN multihoming.", - "properties": { - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n", - "title": "Short Esi" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n", - "title": "Redundancy" - }, - "designated_forwarder_algorithm": { - "type": "string", - "enum": [ - "auto", - "modulus", - "preference" - ], - "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n", - "title": "Designated Forwarder Algorithm" - }, - "designated_forwarder_preferences": { - "type": "array", - "description": "Manual preference as described above, required only for preference algorithm.", - "items": { - "type": "integer" - }, - "title": "Designated Forwarder Preferences" - }, - "dont_preempt": { - "type": "boolean", - "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.", - "title": "Dont Preempt" - } - }, - "required": [ - "short_esi" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Segment" - }, - "port_channel": { - "type": "object", - "description": "Used for port-channel adapter.", - "properties": { - "mode": { - "type": "string", - "description": "Port-Channel Mode.", - "enum": [ - "active", - "passive", - "on" - ], - "title": "Mode" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n", - "title": "Channel ID" - }, - "description": { - "type": "string", - "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n", - "title": "Description" - }, - "enabled": { - "type": "boolean", - "default": true, - "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n", - "title": "Enabled" - }, - "ptp_mpass": { - "type": "boolean", - "default": false, - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "PTP Mpass" - }, - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.", - "deprecated": true, - "title": "Short Esi" - }, - "lacp_fallback": { - "type": "object", - "description": "LACP fallback configuration.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "static", - "individual" - ], - "description": "Either static or individual mode is supported.\nIf the mode is set to \"individual\" the \"individual.profile\" setting must be defined.\n", - "title": "Mode" - }, - "individual": { - "type": "object", - "description": "Define parameters for port-channel member interfaces. Applies only if LACP fallback is set to \"individual\".", - "properties": { - "profile": { - "type": "string", - "description": "Port-profile name to inherit configuration.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Individual" - }, - "timeout": { - "type": "integer", - "description": "Timeout in seconds. EOS default is 90 seconds.", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Fallback" - }, - "lacp_timer": { - "type": "object", - "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".", - "properties": { - "mode": { - "type": "string", - "enum": [ - "normal", - "fast" - ], - "description": "LACP mode for interface members.", - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.", - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "subinterfaces": { - "type": "array", - "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n", - "items": { - "type": "object", - "properties": { - "number": { - "type": "integer", - "description": "Subinterface number.", - "title": "Number" - }, - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nRequired for multihomed port-channels with subinterfaces.\n", - "title": "Short Esi" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "description": "VLAN ID to bridge.\nDefault is subinterface number.\n", - "title": "VLAN ID" - }, - "encapsulation_vlan": { - "type": "object", - "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n", - "properties": { - "client_dot1q": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Client Dot1Q" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Subinterfaces" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulation are all optional, and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "native_vlan": { - "type": "integer", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "mlag": { - "type": "integer", - "description": "MLAG ID.", - "minimum": 1, - "maximum": 2000, - "title": "MLAG" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "lacp_fallback_timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "default": 90, - "minimum": 0, - "maximum": 300, - "title": "LACP Fallback Timeout" - }, - "lacp_fallback_mode": { - "type": "string", - "enum": [ - "individual", - "static" - ], - "title": "LACP Fallback Mode" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "neighbor": { - "type": "string", - "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", - "title": "Neighbor" - }, - "per_link": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rfc_7130": { - "type": "boolean", - "title": "Rfc 7130" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Per Link" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "default": false, - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "esi": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", - "deprecated": true, - "title": "Esi" - }, - "rt": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", - "deprecated": true, - "title": "Rt" - }, - "lacp_id": { - "type": "string", - "description": "LACP ID with format xxxx.xxxx.xxxx.", - "title": "LACP ID" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - }, - "mpass": { - "type": "boolean", - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "Mpass" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 address/mask.", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "load_interval": { - "type": "integer", - "minimum": 0, - "maximum": 600, - "description": "Interval in seconds for updating interface counters.", - "title": "Load Interval" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "native_vlan": { - "type": "integer", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "tagged phone", - "untagged", - "untagged phone" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q", - "port-channel-member" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "address_locking": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Enable address locking for IPv4.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Enable address locking for IPv6.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "desired", - "on", - "off" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "error_correction_encoding": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "fire_code": { - "type": "boolean", - "title": "Fire Code" - }, - "reed_solomon": { - "type": "boolean", - "title": "Reed Solomon" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Error Correction Encoding" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulations are all optional and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask or \"dhcp\".", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string" - }, - "title": "IP Address Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "dhcp_client_accept_default_route": { - "type": "boolean", - "description": "Install default-route obtained via DHCP.", - "title": "DHCP Client Accept Default Route" - }, - "dhcp_server_ipv4": { - "type": "boolean", - "description": "Enable IPv4 DHCP server.", - "title": "DHCP Server IPv4" - }, - "dhcp_server_ipv6": { - "type": "boolean", - "description": "Enable IPv6 DHCP server.", - "title": "DHCP Server IPv6" - }, - "ip_helpers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_nat": { - "type": "object", - "properties": { - "service_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Service Profile" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "multicast": { - "type": "object", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "mac_security": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Security" - }, - "tcp_mss_ceiling": { - "type": "object", - "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", - "properties": { - "ipv4_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv4 Segment Size" - }, - "ipv6_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv6 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "channel_group": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "mode": { - "type": "string", - "enum": [ - "on", - "active", - "passive" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Channel Group" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "poe": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "profile": { - "type": "string", - "description": "Interface profile.", - "title": "Profile" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "congestion_drops": { - "type": "boolean", - "title": "Congestion Drops" - }, - "spanning_tree": { - "type": "boolean", - "title": "Spanning Tree" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "dot1x": { - "type": "object", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Value can be 60-4294967295 or 'server'.", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - }, - "eapol": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "authentication_failure_fallback_mba": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure Fallback Mba" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Eapol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "priority_flow_control": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "priorities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "title": "No Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "priority" - ] - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "lacp_timer": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "fast", - "normal" - ], - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 3000, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "lacp_port_priority": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "LACP Port Priority" - }, - "transceiver": { - "type": "object", - "properties": { - "frequency": { - "type": "string", - "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", - "title": "Frequency" - }, - "frequency_unit": { - "type": "string", - "enum": [ - "ghz" - ], - "description": "Unit of Transceiver Laser Frequency.", - "title": "Frequency Unit" - }, - "media": { - "type": "object", - "properties": { - "override": { - "type": "string", - "description": "Transceiver type.", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Media" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transceiver" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "sync_e": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "priority": { - "type": "string", - "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "port_profile": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Port Profile" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Uc TX Queues" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "max", - "max_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "TX Queues" - }, - "vrrp_ids": { - "type": "array", - "description": "VRRP model.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "switchport": { - "type": "object", - "properties": { - "port_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "mac_address_maximum": { - "type": "object", - "description": "Maximum number of MAC addresses allowed on the interface.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable port level check for port security (only in violation 'shutdown' mode).", - "title": "Disabled" - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "MAC address limit.", - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Maximum" - }, - "violation": { - "type": "object", - "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "shutdown", - "protect" - ], - "description": "Configure port security mode.", - "title": "Mode" - }, - "protect_log": { - "type": "boolean", - "description": "Log new addresses seen after limit is reached in protect mode.", - "title": "Protect Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Violation" - }, - "vlan_default_mac_address_maximum": { - "type": "integer", - "minimum": 0, - "maximum": 1000, - "description": "Default maximum MAC addresses for all VLANs on this interface.", - "title": "VLAN Default MAC Address Maximum" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", - "title": "Range" - }, - "mac_address_maximum": { - "type": "integer", - "title": "MAC Address Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "range" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Security" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Network Ports" - }, - "network_services_keys": { - "type": "array", - "description": "Network Services can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`network_services_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "default": [ - { - "name": "tenants" - } - ], - "title": "Network Services Keys" - }, - "new_network_services_bgp_vrf_config": { - "type": "boolean", - "description": "Set this key to `true` in the node type to generate full BGP configuration\nfor network services even when `evpn` is not in the address families\n(`evpn` is the default address family for `l3ls-evpn` but not for `l2ls`).\n\nThis is `false` by default except if `uplink_type` is set to `p2p-vrfs`, then the default value is `true`.\n\nThis may introduce breaking changes to your configuration.", - "title": "New Network Services BGP VRF Config" - }, - "node_type_keys": { - "type": "array", - "description": "Define Node Type Keys, to specify the properties of each node type in the fabric.\nThis allows for complete customization of the fabric layout and functionality.\n`node_type_keys` should be defined in top level group_var for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n", - "items": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "Key" - }, - "type": { - "type": "string", - "description": "Type value matching this node_type_key.", - "title": "Type" - }, - "connected_endpoints": { - "type": "boolean", - "default": false, - "description": "Are endpoints connected to this node type.", - "title": "Connected Endpoints" - }, - "default_evpn_role": { - "type": "string", - "enum": [ - "none", - "client", - "server" - ], - "default": "none", - "description": "Default evpn_role. Can be overridden in topology vars.", - "title": "Default EVPN Role" - }, - "default_ptp_priority1": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "default": 127, - "description": "Default PTP priority 1", - "title": "Default PTP Priority1" - }, - "default_underlay_routing_protocol": { - "type": "string", - "default": "ebgp", - "description": "Set the default underlay routing_protocol.\nCan be overridden by setting \"underlay_routing_protocol\" host/group_vars.\n", - "enum": [ - "ebgp", - "ospf", - "ospf-ldp", - "isis", - "isis-sr", - "isis-ldp", - "isis-sr-ldp", - "none" - ], - "title": "Default Underlay Routing Protocol" - }, - "default_overlay_routing_protocol": { - "type": "string", - "default": "ebgp", - "enum": [ - "ebgp", - "ibgp", - "her", - "cvx", - "none" - ], - "description": "Set the default overlay routing_protocol.\nCan be overridden by setting \"overlay_routing_protocol\" host/group_vars.\n", - "title": "Default Overlay Routing Protocol" - }, - "default_mpls_overlay_role": { - "type": "string", - "enum": [ - "client", - "server", - "none" - ], - "description": "Set the default mpls overlay role.\nActing role in overlay control plane.\n", - "title": "Default MPLS Overlay Role" - }, - "default_overlay_address_families": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "evpn", - "vpn-ipv4", - "vpn-ipv6" - ] - }, - "description": "Set the default overlay address families.\n", - "title": "Default Overlay Address Families" - }, - "default_evpn_encapsulation": { - "type": "string", - "enum": [ - "mpls", - "vxlan" - ], - "description": "Set the default evpn encapsulation.\n", - "title": "Default EVPN Encapsulation" - }, - "default_wan_role": { - "type": "string", - "enum": [ - "client", - "server" - ], - "description": "Set the default WAN role.\n\nThis is used both for AutoVPN and Pathfinder designs.\nThat means if `wan_mode` root key is set to `autovpn` or `cv-pathfinder`.\n`server` indicates that the router is a route-reflector.\n\nOnly supported if `overlay_routing_protocol` is set to `ibgp`.\n", - "title": "Default Wan Role" - }, - "default_flow_tracker_type": { - "type": "string", - "enum": [ - "sampled", - "hardware" - ], - "description": "Set the default flow tracker type.", - "default": "sampled", - "title": "Default Flow Tracker Type" - }, - "mlag_support": { - "type": "boolean", - "default": false, - "description": "Can this node type support mlag.", - "title": "MLAG Support" - }, - "network_services": { - "description": "Will network services be deployed on this node type.", - "type": "object", - "properties": { - "l1": { - "type": "boolean", - "default": false, - "description": "??", - "title": "L1" - }, - "l2": { - "type": "boolean", - "default": false, - "description": "Vlans", - "title": "L2" - }, - "l3": { - "type": "boolean", - "default": false, - "description": "VRFs, SVIs (if l2 is true).\nOnly supported with underlay_router.\n", - "title": "L3" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network Services" - }, - "underlay_router": { - "type": "boolean", - "default": true, - "description": "Is this node type a L3 device.", - "title": "Underlay Router" - }, - "uplink_type": { - "type": "string", - "enum": [ - "p2p", - "port-channel", - "p2p-vrfs", - "lan" - ], - "default": "p2p", - "description": "`uplink_type` must be `p2p`, `p2p-vrfs` or `lan` if `vtep` or `underlay_router` is true.\n\nFor `p2p-vrfs`, the uplinks are configured as L3 interfaces with a subinterface for each VRF\nin `network_services` present on both the uplink and the downlink switch.\nThe subinterface ID is the `vrf_id`.\n'underlay_router' and 'network_services.l3' must be set to true.\nVRF `default` is always configured on the physical interface using the underlay routing protocol.\nAll subinterfaces use the same IP address as the physical interface.\nMulticast is not supported.\nOnly BGP is supported for subinterfaces.\n\nFor `lan`, a single uplink interface is supported and will be configured as an L3 Interface with\nsubinterfaces for each SVI defined under the VRFs in `network_services` as long as the uplink switch also\nhas the VLAN permitted by tag/tenant filtering.", - "title": "Uplink Type" - }, - "vtep": { - "type": "boolean", - "default": false, - "description": "Is this switch an EVPN VTEP.", - "title": "Vtep" - }, - "mpls_lsr": { - "type": "boolean", - "default": false, - "description": "Is this switch an MPLS LSR.", - "title": "MPLS Lsr" - }, - "ip_addressing": { - "type": "object", - "description": "Override ip_addressing templates.", - "properties": { - "python_module": { - "type": "string", - "description": "Custom Python Module to import for IP addressing.", - "title": "Python Module" - }, - "python_class_name": { - "type": "string", - "description": "Name of Custom Python Class to import for IP addressing.", - "title": "Python Class Name" - }, - "router_id": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Router ID" - }, - "router_id_ipv6": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Router ID IPv6" - }, - "mlag_ip_primary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG IP Primary" - }, - "mlag_ip_secondary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG IP Secondary" - }, - "mlag_l3_ip_primary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG L3 IP Primary" - }, - "mlag_l3_ip_secondary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG L3 IP Secondary" - }, - "mlag_ibgp_peering_ip_primary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG Ibgp Peering IP Primary" - }, - "mlag_ibgp_peering_ip_secondary": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG Ibgp Peering IP Secondary" - }, - "p2p_uplinks_ip": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "P2P Uplinks IP" - }, - "p2p_uplinks_peer_ip": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "P2P Uplinks Peer IP" - }, - "vtep_ip_mlag": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Vtep IP MLAG" - }, - "vtep_ip": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Vtep IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Addressing" - }, - "interface_descriptions": { - "type": "object", - "description": "Override interface_descriptions templates.\nIf description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.\n", - "properties": { - "python_module": { - "type": "string", - "description": "Custom Python Module to import for interface descriptions.", - "title": "Python Module" - }, - "python_class_name": { - "type": "string", - "description": "Name of Custom Python Class to import for interface descriptions.", - "title": "Python Class Name" - }, - "underlay_ethernet_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Underlay Ethernet Interfaces" - }, - "underlay_port_channel_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Underlay Port Channel Interfaces" - }, - "mlag_ethernet_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG Ethernet Interfaces" - }, - "mlag_port_channel_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "MLAG Port Channel Interfaces" - }, - "connected_endpoints_ethernet_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Connected Endpoints Ethernet Interfaces" - }, - "connected_endpoints_port_channel_interfaces": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Connected Endpoints Port Channel Interfaces" - }, - "overlay_loopback_interface": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Overlay Loopback Interface" - }, - "vtep_loopback_interface": { - "type": "string", - "description": "Path to Custom J2 template.", - "title": "Vtep Loopback Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface Descriptions" - }, - "cv_tags_topology_type": { - "description": "PREVIEW: This key is currently not supported\nType that CloudVision should use when generating the Topology.", - "type": "string", - "enum": [ - "leaf", - "spine", - "core", - "edge" - ], - "title": "Cv Tags Topology Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "key" - ] - }, - "title": "Node Type Keys" - }, - "ntp_settings": { - "type": "object", - "description": "NTP settings", - "properties": { - "server_vrf": { - "type": "string", - "description": "EOS only supports NTP servers in one VRF, so this VRF is used for all NTP servers and one local-interface.\n- `use_mgmt_interface_vrf` will configure the NTP server(s) under the VRF set with `mgmt_interface_vrf` and set the `mgmt_interface` as NTP local-interface.\n An error will be raised if `mgmt_ip` or `ipv6_mgmt_ip` are not configured for the device.\n- `use_inband_mgmt_vrf` will configure the NTP server(s) under the VRF set with `inband_mgmt_vrf` and set the `inband_mgmt_interface` as NTP local-interface.\n An error will be raised if inband management is not configured for the device.\n- Any other string will be used directly as the VRF name but local interface must be set with `custom_structured_configuration_ntp` if needed.\nIf not set, the VRF is automatically picked up from the global setting `default_mgmt_method`.", - "title": "Server VRF" - }, - "servers": { - "type": "array", - "description": "The first server is always set as \"preferred\".", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", - "title": "Name" - }, - "burst": { - "type": "boolean", - "title": "Burst" - }, - "iburst": { - "type": "boolean", - "title": "Iburst" - }, - "key": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key" - }, - "maxpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of maxpoll between 3 - 17 (Logarithmic).", - "title": "Maxpoll" - }, - "minpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of minpoll between 3 - 17 (Logarithmic).", - "title": "Minpoll" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 4, - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Servers" - }, - "authenticate": { - "type": "boolean", - "title": "Authenticate" - }, - "authenticate_servers_only": { - "type": "boolean", - "title": "Authenticate Servers Only" - }, - "authentication_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65534, - "description": "Key identifier.", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Obfuscated key.", - "title": "Key" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "title": "Key Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Authentication Keys" - }, - "trusted_keys": { - "type": "string", - "description": "List of trusted-keys as string ex. 10-12,15.", - "title": "Trusted Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "NTP Settings" - }, - "only_local_vlan_trunk_groups": { - "type": "boolean", - "description": "A vlan can have many trunk_groups assigned.\nTo avoid unneeded configuration changes on all leaf switches when a new trunk group is added,\nthis feature will only configure the vlan trunk groups matched with local connected_endpoints.\nSee \"Details on only_local_vlan_trunk_groups\" below.\nRequires \"enable_trunk_groups: true\".\n", - "default": false, - "title": "Only Local VLAN Trunk Groups" - }, - "overlay_cvx_servers": { - "description": "List of CVX vxlan overlay controllers.\nRequired if overlay_routing_protocol == CVX.\nCVX servers (VMs) are peering using their management interface, so mgmt_ip must be set for all CVX servers.\n", - "type": "array", - "items": { - "type": "string", - "description": "'inventory_hostname' of CVX server.\n" - }, - "title": "Overlay CVX Servers" - }, - "overlay_her_flood_list_per_vni": { - "type": "boolean", - "description": "When using Head-End Replication, configure flood-lists per VNI.\nBy default HER will be configured with a common flood-list containing all VTEPs.\nThis behavior can be changed to per-VNI flood-lists by setting `overlay_her_flood_list_per_vni: true`.\nThis will make `eos_designs` consider configured VLANs per VTEP, and only include the relevant VTEPs to each VNI's flood-list.\n", - "default": false, - "title": "Overlay Her Flood List Per Vni" - }, - "overlay_her_flood_list_scope": { - "type": "string", - "description": "When using Head-End Replication, set the scope of flood-lists to Fabric or DC.\nBy default all VTEPs in the Fabric (part of the inventory group referenced by \"fabric_name\") are added to the flood-lists.\nThis can be changed to all VTEPs in the DC (sharing the same \"dc_name\" value).\nThis is useful if Border Leaf switches are dividing the VXLAN overlay into separate domains.\n", - "enum": [ - "fabric", - "dc" - ], - "default": "fabric", - "title": "Overlay Her Flood List Scope" - }, - "overlay_loopback_description": { - "description": "Customize the description on overlay interface Loopback0.", - "type": "string", - "title": "Overlay Loopback Description" - }, - "overlay_mlag_rfc5549": { - "description": "IPv6 Unnumbered for MLAG iBGP connections.\nRequires \"underlay_rfc5549: true\".\n", - "type": "boolean", - "default": false, - "title": "Overlay MLAG Rfc5549" - }, - "overlay_rd_type": { - "type": "object", - "description": "Configuration options for the Administrator subfield (first part of RD) and the Assigned Number subfield (second part of RD).\n\nBy default Route Distinguishers (RD) are set to:\n- `:` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VLAN-Aware Bundles defined under 'evpn_vlan_bundles'.\n- `:` for VRFs.\n\nNote:\nRD is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using loopback or 32-bit ASN/number the assigned number can only be a 16-bit number. This may be a problem with large VNIs.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n", - "properties": { - "admin_subfield": { - "type": "string", - "description": "The method for deriving RD Administrator subfield (first part of RD):\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n", - "default": "overlay_loopback_ip", - "title": "Admin Subfield" - }, - "admin_subfield_offset": { - "type": "string", - "description": "Offset can only be used if admin_subfield is an integer between <0-4294967295> or 'switch_id'.\nTotal value of admin_subfield + admin_subfield_offset must be <= 4294967295.\n", - "title": "Admin Subfield Offset" - }, - "vrf_admin_subfield": { - "type": "string", - "description": "The method for deriving RD Administrator subfield (first part of RD) for VRF services:\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n", - "title": "VRF Admin Subfield" - }, - "vrf_admin_subfield_offset": { - "type": "string", - "description": "Offset can only be used if 'vrf_admin_subfield' is an integer between <0-4294967295> or 'switch_id'.\nTotal value of 'vrf_admin_subfield' + 'vrf_admin_subfield_offset' must be <= 4294967295.\n", - "title": "VRF Admin Subfield Offset" - }, - "vlan_assigned_number_subfield": { - "type": "string", - "enum": [ - "mac_vrf_id", - "mac_vrf_vni", - "vlan_id" - ], - "default": "mac_vrf_id", - "description": "The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order).\n", - "title": "VLAN Assigned Number Subfield" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Overlay Rd Type" - }, - "overlay_routing_protocol": { - "description": "- The following overlay routing protocols are supported:\n - eBGP: Configures fabric with eBGP, default for l3ls-evpn design.\n - iBGP: Configured fabric with iBGP, only supported with OSPF or ISIS variants in underlay, default for mpls design.\n - CVX: Configures fabric to leverage CloudVision eXchange as the overlay controller.\n - HER: Configures fabric with Head-End Replication, configures static VXLAN flood-lists instead of using a dynamic overlay protocol.\n - none: No overlay configuration will be generated, default for l2ls design.\n", - "type": "string", - "enum": [ - "ebgp", - "ibgp", - "cvx", - "her", - "none" - ], - "default": "ebgp", - "title": "Overlay Routing Protocol" - }, - "overlay_routing_protocol_address_family": { - "type": "string", - "description": "When set to `ipv6`, enable overlay EVPN peering with IPv6 addresses.\nThis feature depends on underlay_ipv6 variable. As of today, only RFC5549 is capable to transport IPv6 in the underlay.\n", - "enum": [ - "ipv4", - "ipv6" - ], - "default": "ipv4", - "title": "Overlay Routing Protocol Address Family" - }, - "overlay_rt_type": { - "type": "object", - "description": "Configuration options for the Administrator subfield (first part of RT) and the Assigned Number subfield (second part of RT).\n\nBy default Route Targets (RT) are set to:\n- `<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>:<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VLAN-Aware Bundles defined under 'evpn_vlan_bundles'.\n- `:` for VRFs.\n\nNotes:\nRT is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using 32-bit ASN/number the VNI can only be a 16-bit number. Alternatively use vlan_id/vrf_id as assigned number.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n", - "properties": { - "admin_subfield": { - "type": "string", - "description": "The method for deriving RT Administrator subfield (first part of RT):\n- 'vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id` for VLANs, `(vrf_vni or vrf_id)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'id' means `vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\nThe 'vrf_id' and 'vrf_vni' methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\nThe 'vrf_id', 'vrf_vni' and 'id' methods can be overridden per bundle defined under `evpn_vlan_bundles` using 'rt_override'.\n", - "default": "vrf_id", - "title": "Admin Subfield" - }, - "vrf_admin_subfield": { - "type": "string", - "description": "The method for deriving RT Administrator subfield (first part of RT) for VRF services:\n- 'id' means `(vrf_id or vrf_vni)`.\n- 'vrf_id' means `(vrf_id or vrf_vni)`.\n- 'vrf_vni' means `(vrf_vni or vrf_id)`.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n", - "default": "vrf_id", - "title": "VRF Admin Subfield" - }, - "vlan_assigned_number_subfield": { - "type": "string", - "enum": [ - "mac_vrf_id", - "mac_vrf_vni", - "vlan_id" - ], - "default": "mac_vrf_id", - "description": "The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\n", - "title": "VLAN Assigned Number Subfield" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Overlay Rt Type" - }, - "p2p_uplinks_mtu": { - "description": "Point to Point Links MTU.", - "type": "integer", - "minimum": 68, - "maximum": 65535, - "default": 9214, - "title": "P2P Uplinks MTU" - }, - "p2p_uplinks_qos_profile": { - "description": "QOS Profile assigned on all infrastructure links.", - "type": "string", - "title": "P2P Uplinks QOS Profile" - }, - "platform_settings": { - "type": "array", - "items": { - "type": "object", - "properties": { - "platforms": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Platforms" - }, - "trident_forwarding_table_partition": { - "type": "string", - "description": "Only applied when evpn_multicast is true.", - "title": "Trident Forwarding Table Partition" - }, - "reload_delay": { - "type": "object", - "properties": { - "mlag": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "description": "In seconds.", - "title": "MLAG" - }, - "non_mlag": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "description": "In seconds.", - "title": "Non MLAG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reload Delay" - }, - "tcam_profile": { - "type": "string", - "title": "TCAM Profile" - }, - "lag_hardware_only": { - "type": "boolean", - "title": "LAG Hardware Only" - }, - "default_interface_mtu": { - "type": "integer", - "description": "Default interface MTU configured on EOS under \"interface defaults\".\nTakes precedence over the root key \"default_interface_mtu\".\n", - "minimum": 68, - "maximum": 65535, - "title": "Default Interface MTU" - }, - "feature_support": { - "type": "object", - "properties": { - "queue_monitor_length_notify": { - "type": "boolean", - "default": true, - "title": "Queue Monitor Length Notify" - }, - "interface_storm_control": { - "type": "boolean", - "default": true, - "title": "Interface Storm Control" - }, - "poe": { - "type": "boolean", - "default": false, - "title": "PoE" - }, - "per_interface_mtu": { - "type": "boolean", - "default": true, - "description": "Support for configuration of per interface MTU for p2p links, MLAG SVIs and Network Services.\nEffectively this means that all settings regarding interface MTU will be ignored if this is false.\nPlatforms without support for per interface MTU can use a single default interface MTU setting. Set this via \"default_interface_mtu\"\n", - "title": "Per Interface MTU" - }, - "bgp_update_wait_install": { - "type": "boolean", - "default": true, - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\nCan be overridden by setting \"bgp_update_wait_install\" host/group_vars.\n", - "title": "BGP Update Wait Install" - }, - "bgp_update_wait_for_convergence": { - "type": "boolean", - "default": true, - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\nCan be overridden by setting \"bgp_update_wait_for_convergence\" host/group_vars.\n", - "title": "BGP Update Wait For Convergence" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Feature Support" - }, - "management_interface": { - "type": "string", - "default": "Management1", - "title": "Management Interface" - }, - "security_entropy_sources": { - "description": "Entropy source improves the randomness of the numbers used to generate MACsec's cryptographic keys.", - "type": "object", - "properties": { - "hardware": { - "type": "boolean", - "description": "Use a hardware based source.", - "title": "Hardware" - }, - "haveged": { - "type": "boolean", - "description": "Use the HAVEGE algorithm.", - "title": "Haveged" - }, - "cpu_jitter": { - "type": "boolean", - "description": "Use the Jitter RNG algorithm of a CPU based source.", - "title": "CPU Jitter" - }, - "hardware_exclusive": { - "type": "boolean", - "description": "Only use entropy from the hardware source.", - "title": "Hardware Exclusive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Security Entropy Sources" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config for eos_cli_config_gen.", - "properties": { - "aaa_accounting": { - "type": "object", - "properties": { - "exec": { - "type": "object", - "properties": { - "console": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Console" - }, - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exec" - }, - "system": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "System" - }, - "dot1x": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "commands": { - "type": "object", - "properties": { - "console": { - "type": "array", - "items": { - "type": "object", - "properties": { - "commands": { - "type": "string", - "description": "Privilege level 'all' or 0-15.", - "title": "Commands" - }, - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Console" - }, - "default": { - "type": "array", - "items": { - "type": "object", - "properties": { - "commands": { - "type": "string", - "description": "Privilege level 'all' or 0-15.", - "title": "Commands" - }, - "type": { - "type": "string", - "enum": [ - "none", - "start-stop", - "stop-only" - ], - "title": "Type" - }, - "group": { - "description": "Group Name.", - "type": "string", - "title": "Group" - }, - "logging": { - "type": "boolean", - "title": "Logging" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Accounting" - }, - "aaa_authentication": { - "type": "object", - "properties": { - "login": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Login authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - }, - "console": { - "type": "string", - "description": "Console authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Console" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Login" - }, - "enable": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Enable authentication method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Enable" - }, - "dot1x": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "802.1x authentication method(s) as a string.\nExamples:\n- \"group radius\"\n- \"group MYGROUP group radius\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "policies": { - "type": "object", - "properties": { - "on_failure_log": { - "type": "boolean", - "title": "On Failure Log" - }, - "on_success_log": { - "type": "boolean", - "title": "On Success Log" - }, - "local": { - "type": "object", - "properties": { - "allow_nopassword": { - "type": "boolean", - "title": "Allow Nopassword" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local" - }, - "lockout": { - "type": "object", - "properties": { - "failure": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Failure" - }, - "duration": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Duration" - }, - "window": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Window" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lockout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Authentication" - }, - "aaa_authorization": { - "type": "object", - "properties": { - "policy": { - "type": "object", - "properties": { - "local_default_role": { - "type": "string", - "title": "Local Default Role" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy" - }, - "exec": { - "type": "object", - "properties": { - "default": { - "type": "string", - "description": "Exec authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group radius group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exec" - }, - "config_commands": { - "type": "boolean", - "title": "Config Commands" - }, - "serial_console": { - "type": "boolean", - "title": "Serial Console" - }, - "dynamic": { - "type": "object", - "properties": { - "dot1x_additional_groups": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "dot1x Additional Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic" - }, - "commands": { - "type": "object", - "properties": { - "all_default": { - "type": "string", - "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\n", - "title": "All Default" - }, - "privilege": { - "type": "array", - "items": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Privilege level(s) 0-15.", - "title": "Level" - }, - "default": { - "type": "string", - "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"\n", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Privilege" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Authorization" - }, - "aaa_root": { - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "sha512_password": { - "type": "string", - "title": "SHA512 Password" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA Root" - }, - "aaa_server_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Group name.", - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "tacacs+", - "radius", - "ldap" - ], - "title": "Type" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "server": { - "type": "string", - "description": "Hostname or IP address.", - "title": "Server" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Servers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "AAA Server Groups" - }, - "access_lists": { - "type": "array", - "title": "IP Extended Access-Lists (legacy model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "permit_response_traffic": { - "type": "string", - "enum": [ - "nat" - ], - "description": "Permit response traffic automatically based on NAT translations.\nMinimum EOS version requirement 4.32.2F.", - "title": "Permit Response Traffic" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ip any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "address_locking": { - "type": "object", - "properties": { - "dhcp_servers_ipv4": { - "type": "array", - "items": { - "type": "string", - "description": "DHCP server IPv4 address." - }, - "title": "DHCP Servers IPv4" - }, - "disabled": { - "type": "boolean", - "description": "Disable IP locking on configured ports.", - "title": "Disabled" - }, - "leases": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "IP address.", - "title": "IP" - }, - "mac": { - "type": "string", - "description": "MAC address (hhhh.hhhh.hhhh or hh:hh:hh:hh:hh:hh).", - "title": "MAC" - } - }, - "required": [ - "ip", - "mac" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Leases" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "locked_address": { - "type": "object", - "properties": { - "expiration_mac_disabled": { - "type": "boolean", - "description": "Configure deauthorizing locked addresses upon MAC aging out.", - "title": "Expiration MAC Disabled" - }, - "ipv4_enforcement_disabled": { - "type": "boolean", - "description": "Configure enforcement for locked IPv4 addresses.", - "title": "IPv4 Enforcement Disabled" - }, - "ipv6_enforcement_disabled": { - "type": "boolean", - "description": "Configure enforcement for locked IPv6 addresses.", - "title": "IPv6 Enforcement Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Locked Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "agents": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Agent name.", - "title": "Name" - }, - "environment_variables": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Environment variable name.", - "title": "Name" - }, - "value": { - "type": "string", - "description": "Environment variable value.", - "title": "Value" - } - }, - "required": [ - "value", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Environment Variables" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Agents" - }, - "aliases": { - "type": "string", - "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```\n", - "title": "Aliases" - }, - "application_traffic_recognition": { - "type": "object", - "description": "Application traffic recognition configuration.", - "properties": { - "categories": { - "type": "array", - "description": "List of categories.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Category name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Categories" - }, - "field_sets": { - "type": "object", - "properties": { - "l4_ports": { - "type": "array", - "description": "L4 port field-set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "L4 port field-set name.", - "title": "Name" - }, - "port_values": { - "type": "array", - "items": { - "type": "string", - "description": "Port values or range of port values.\nPort values are between 0 and 65535." - }, - "title": "Port Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Ports" - }, - "ipv4_prefixes": { - "type": "array", - "description": "IPv4 prefix field set.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 prefix field-set name.", - "title": "Name" - }, - "prefix_values": { - "type": "array", - "items": { - "type": "string", - "description": "IP prefix (ex 1.2.3.0/24)." - }, - "title": "Prefix Values" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Field Sets" - }, - "applications": { - "type": "object", - "properties": { - "ipv4_applications": { - "type": "array", - "description": "List of user defined IPv4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "src_prefix_set_name": { - "type": "string", - "description": "Source prefix set name.", - "title": "Src Prefix Set Name" - }, - "dest_prefix_set_name": { - "type": "string", - "description": "Destination prefix set name.", - "title": "Dest Prefix Set Name" - }, - "dscp_ranges": { - "type": "array", - "description": "Accept DSCP value(s) or range(s).\nDSCP values can be between 0 and 63.\nOther valid values are cs0 to cs7, af11-13, af21-23, af31-33, af41-af43 and ef.\nNote: The values are not sorted so the list items need to be supplied in the right order to match the CLI if required.", - "items": { - "type": "string", - "description": "DSCP value or range syntax.", - "pattern": "^(?:cs[1-7]|af[1-4][1-3]|ef|(?:(?:,|,\\s|^)(?:\\d|[1-5]\\d|6[0-3])(?:-(?:\\d|[1-5]\\d|6[0-3]))?)+)$" - }, - "title": "DSCP Ranges" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4 Applications" - }, - "l4_applications": { - "type": "array", - "description": "List of user defined L4 applications. The name should be unique over all defined applications (ipv4 and l4).", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application name.", - "title": "Name" - }, - "protocols": { - "type": "array", - "description": "List of protocols to consider for this application.\nTo use port field-sets (source, destination or both), the list\nmust contain only one or two protocols, either `tcp` or `udp`.\nWhen using both protocols, one line is rendered for each in the configuration,\nhence the field-sets must have the same value for `tcp_src_port_set_name` and\n`udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`\nif set in order to generate valid configuration in EOS.", - "items": { - "type": "string", - "enum": [ - "ahp", - "esp", - "icmp", - "igmp", - "ospf", - "pim", - "rsvp", - "tcp", - "udp", - "vrrp" - ] - }, - "title": "Protocols" - }, - "protocol_ranges": { - "type": "array", - "description": "Accept protocol value(s) or range(s).\nProtocol values can be between 1 and 255.", - "items": { - "type": "string" - }, - "title": "Protocol Ranges" - }, - "udp_src_port_set_name": { - "type": "string", - "description": "Name of field set for UDP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_src_port_set_name`.", - "title": "UDP Src Port Set Name" - }, - "tcp_src_port_set_name": { - "type": "string", - "description": "Name of field set for TCP source ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_src_port_set_name`.", - "title": "TCP Src Port Set Name" - }, - "udp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for UDP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `tcp_dest_port_set_name`.", - "title": "UDP Dest Port Set Name" - }, - "tcp_dest_port_set_name": { - "type": "string", - "description": "Name of field set for TCP destination ports.\nWhen the `protocols` list contain both `tcp` and `udp`, this key value\nmust be the same as `udp_dest_port_set_name`.", - "title": "TCP Dest Port Set Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "L4 Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Applications" - }, - "application_profiles": { - "type": "array", - "description": "Group of applications.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Profile name.", - "title": "Name" - }, - "applications": { - "type": "array", - "description": "List of applications part of the application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Application Name.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Applications" - }, - "application_transports": { - "type": "array", - "description": "List of transport protocols.", - "items": { - "type": "string", - "description": "Transport name.", - "enum": [ - "http", - "https", - "udp", - "tcp", - "ip", - "ip6", - "ssl", - "rtp", - "sctp", - "quic" - ] - }, - "title": "Application Transports" - }, - "categories": { - "type": "array", - "description": "Categories under this application profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of a category.", - "title": "Name" - }, - "service": { - "type": "string", - "description": "Service Name.\nSpecific service to target for this application.\nIf no service is specified, all supported services of the application are matched.\nNot all valid values are valid for all applications, check on EOS CLI.", - "enum": [ - "audio-video", - "chat", - "default", - "file-transfer", - "networking-protocols", - "peer-to-peer", - "software-update" - ], - "title": "Service" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Categories" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Application Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Application Traffic Recognition" - }, - "arp": { - "type": "object", - "properties": { - "persistent": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Restore the ARP cache after reboot.", - "title": "Enabled" - }, - "refresh_delay": { - "type": "integer", - "description": "Time to wait in seconds before refreshing the ARP cache after reboot (EOS default 600).", - "minimum": 600, - "maximum": 3600, - "title": "Refresh Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Persistent" - }, - "aging": { - "type": "object", - "properties": { - "timeout_default": { - "description": "Timeout in seconds.", - "type": "integer", - "minimum": 60, - "maximum": 65535, - "title": "Timeout Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Aging" - }, - "static_entries": { - "type": "array", - "description": "Static ARP entries.", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "ARP entry IPv4 address.", - "title": "IPv4 Address" - }, - "vrf": { - "type": "string", - "description": "ARP entry VRF.", - "title": "VRF" - }, - "mac_address": { - "type": "string", - "description": "ARP entry MAC address.", - "pattern": "^[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}\\.[0-9A-Fa-f]{4}$", - "title": "MAC Address" - } - }, - "required": [ - "ipv4_address", - "mac_address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ARP" - }, - "as_path": { - "type": "object", - "properties": { - "regex_mode": { - "type": "string", - "enum": [ - "asn", - "string" - ], - "title": "Regex Mode" - }, - "access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access List Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "match": { - "type": "string", - "description": "Regex To Match.", - "title": "Match" - }, - "origin": { - "type": "string", - "enum": [ - "any", - "egp", - "igp", - "incomplete" - ], - "default": "any", - "title": "Origin" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Access Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "avd_data_conversion_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug", - "quiet" - ], - "default": "debug", - "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages.\n", - "title": "AVD Data Conversion Mode" - }, - "avd_data_validation_mode": { - "type": "string", - "enum": [ - "disabled", - "error", - "warning", - "info", - "debug" - ], - "default": "warning", - "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", - "title": "AVD Data Validation Mode" - }, - "banners": { - "type": "object", - "properties": { - "login": { - "type": "string", - "description": "Multiline string ending with EOF on the last line.", - "title": "Login" - }, - "motd": { - "type": "string", - "description": "Multiline string ending with EOF on the last line.", - "title": "Motd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Banners" - }, - "bgp_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "neighbors": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Neighbors" - }, - "bgp_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Profile Name." - }, - "title": "BGP Maintenance Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "BGP Groups" - }, - "boot": { - "title": "System Boot Settings", - "description": "Set the Aboot password.\n", - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "default": "sha512", - "title": "Hash Algorithm" - }, - "key": { - "description": "Hashed Password.", - "type": "string", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "class_maps": { - "type": "object", - "title": "QOS Class-maps", - "properties": { - "pbr": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class-Map Name.", - "title": "Name" - }, - "ip": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "Standard Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "PBR" - }, - "qos": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class-Map Name.", - "title": "Name" - }, - "vlan": { - "type": "string", - "description": "VLAN value(s) or range(s) of VLAN values.", - "title": "VLAN" - }, - "cos": { - "type": "string", - "description": "CoS value(s) or range(s) of CoS values.", - "title": "COS" - }, - "ip": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "IPv4 Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP" - }, - "ipv6": { - "type": "object", - "properties": { - "access_group": { - "type": "string", - "description": "IPv6 Access-List Name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "clock": { - "type": "object", - "properties": { - "timezone": { - "type": "string", - "title": "Timezone" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Clock" - }, - "community_lists": { - "type": "array", - "title": "Community Lists (legacy model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit GSHUT 65123:123\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "config_comment": { - "type": "string", - "description": "Add a comment to provide information about the configuration.\nThis comment will be rendered at the top of the generated configuration.", - "title": "Config Comment" - }, - "custom_templates": { - "type": "array", - "title": "Extensibility with Custom Templates", - "description": "- Custom templates can be added below the playbook directory.\n- If a location above the directory is desired, a symbolic link can be used.\n- Example under the `playbooks` directory create symbolic link with the following command:\n\n ```bash\n ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n ```\n\n- The output will be rendered at the end of the configuration.\n- The order of custom templates in the list can be important if they overlap.\n- It is recommended to use a `!` delimiter at the top of each custom template.\n\nAdd `custom_templates` to group/host variables:\n", - "items": { - "type": "string", - "description": "Template relative path below playbook directory." - } - }, - "cvx": { - "type": "object", - "description": "CVX server features are not supported on physical switches. See `management_cvx` for client configurations.", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "peer_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or hostname." - }, - "title": "Peer Hosts" - }, - "services": { - "type": "object", - "properties": { - "mcs": { - "type": "object", - "properties": { - "redis": { - "type": "object", - "properties": { - "password": { - "type": "string", - "description": "Hashed password using the password_type.", - "title": "Password" - }, - "password_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Password Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redis" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MCS" - }, - "vxlan": { - "type": "object", - "description": "VXLAN Controller service.", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vtep_mac_learning": { - "type": "string", - "enum": [ - "control-plane", - "data-plane" - ], - "title": "Vtep MAC Learning" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CVX" - }, - "daemon_terminattr": { - "type": "object", - "description": "You can either provide a list of IPs/FQDNs to target on-premise Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming to multiple clusters both on-prem and cloud service is supported.\n\n!!! note\n For TerminAttr version recommendation and EOS compatibility matrix, please refer to the latest TerminAttr Release Notes\n which always contain the latest recommended versions and minimum required versions per EOS release.\n", - "properties": { - "cvaddrs": { - "type": "array", - "description": "Streaming address(es) for CloudVision single cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", - "items": { - "type": "string", - "description": "Server address in the format `:`." - }, - "title": "Cvaddrs" - }, - "clusters": { - "type": "array", - "description": "Multiple CloudVision clusters.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Cluster Name.", - "title": "Name" - }, - "cvaddrs": { - "type": "array", - "description": "Streaming address(es) for CloudVision cluster.\n- TCP 9910 is used for CV on-prem\n- TCP 443 is used for CV as a Service\n", - "items": { - "type": "string", - "description": "Server address in the format `:`." - }, - "title": "Cvaddrs" - }, - "cvauth": { - "type": "object", - "description": "Authentication scheme used to connect to CloudVision.\n", - "properties": { - "method": { - "type": "string", - "enum": [ - "token", - "token-secure", - "key", - "certs" - ], - "title": "Method" - }, - "key": { - "type": "string", - "title": "Key" - }, - "token_file": { - "type": "string", - "description": "Token file path.\ne.g. \"/tmp/token\"\n", - "title": "Token File" - }, - "cert_file": { - "type": "string", - "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", - "title": "Cert File" - }, - "ca_file": { - "type": "string", - "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", - "title": "Ca File" - }, - "key_file": { - "type": "string", - "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", - "title": "Key File" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cvauth" - }, - "cvobscurekeyfile": { - "type": "boolean", - "description": "Encrypt the private key used for authentication to CloudVision.\n", - "title": "Cvobscurekeyfile" - }, - "cvproxy": { - "type": "string", - "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", - "title": "Cvproxy" - }, - "cvsourceip": { - "type": "string", - "description": "Set source IP address in case of in-band management.\n", - "title": "Cvsourceip" - }, - "cvsourceintf": { - "type": "string", - "description": "Set source interface in case of in-band management. Available as of TerminAttr v1.23.0.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", - "title": "Cvsourceintf" - }, - "cvvrf": { - "type": "string", - "description": "The VRF to use to connect to CloudVision.\n", - "title": "Cvvrf" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Clusters" - }, - "cvauth": { - "type": "object", - "description": "Authentication scheme used to connect to CloudVision.\n", - "properties": { - "method": { - "type": "string", - "enum": [ - "token", - "token-secure", - "key", - "certs" - ], - "title": "Method" - }, - "key": { - "type": "string", - "title": "Key" - }, - "token_file": { - "type": "string", - "description": "Token file path.\ne.g. \"/tmp/token\"\n", - "title": "Token File" - }, - "cert_file": { - "type": "string", - "description": "Client certificate file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/client.crt\"\n", - "title": "Cert File" - }, - "ca_file": { - "type": "string", - "description": "CA certificate file path (on-prem only).\ne.g. \"/persist/secure/ssl/terminattr/primary/certs/ca.crt\"\n", - "title": "Ca File" - }, - "key_file": { - "type": "string", - "description": "Client certificate key file path.\ne.g. \"/persist/secure/ssl/terminattr/primary/keys/client.key\"\n", - "title": "Key File" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cvauth" - }, - "cvobscurekeyfile": { - "type": "boolean", - "description": "Encrypt the private key used for authentication to CloudVision.\n", - "title": "Cvobscurekeyfile" - }, - "cvproxy": { - "type": "string", - "description": "Proxy server through which CloudVision is reachable. Useful when the CloudVision server is hosted in the cloud.\nThe expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`. Available as of TerminAttr v1.13.0.\n", - "title": "Cvproxy" - }, - "cvsourceip": { - "type": "string", - "description": "Set source IP address in case of in-band management.\n", - "title": "Cvsourceip" - }, - "cvsourceintf": { - "type": "string", - "description": "Set source interface in case of in-band management.\nThe interface name is case sensitive and has to match the interface name in the running-config, e.g.:Vlan100.\n", - "title": "Cvsourceintf" - }, - "cvvrf": { - "type": "string", - "description": "The VRF to use to connect to CloudVision.\n", - "title": "Cvvrf" - }, - "cvgnmi": { - "type": "boolean", - "description": "Stream states from EOS gNMI servers (Openconfig) to CloudVision. Available as of TerminAttr v1.13.1.\n", - "title": "Cvgnmi" - }, - "disable_aaa": { - "type": "boolean", - "description": "Disable AAA authorization and accounting.\nWhen setting this flag, all commands pushed from CloudVision are applied directly to the CLI without authorization.\n", - "title": "Disable AAA" - }, - "grpcaddr": { - "type": "string", - "description": "Set the gRPC server address, the default is 127.0.0.1:6042.\ne.g. \"MGMT/0.0.0.0:6042\"\n", - "title": "Grpcaddr" - }, - "grpcreadonly": { - "type": "boolean", - "description": "gNMI read-only mode - Disable gnmi.Set().\n", - "title": "Grpcreadonly" - }, - "ingestexclude": { - "type": "string", - "description": "Exclude paths from Sysdb on the ingest side.\ne.g. \"/Sysdb/cell/1/agent,/Sysdb/cell/2/agent\"\n", - "title": "Ingestexclude" - }, - "smashexcludes": { - "type": "string", - "description": "Exclude paths from the shared memory table.\ne.g. \"ale,flexCounter,hardware,kni,pulse,strata\"\n", - "title": "Smashexcludes" - }, - "taillogs": { - "type": "string", - "description": "Enable log file collection; /var/log/messages is streamed by default if no path is set.\ne.g. \"/var/log/messages\"\n", - "title": "Taillogs" - }, - "ecodhcpaddr": { - "type": "string", - "description": "ECO DHCP Collector address or ECO DHCP Fingerprint listening address in standalone mode (default \"127.0.0.1:67\").\n", - "title": "Ecodhcpaddr" - }, - "ipfix": { - "type": "boolean", - "description": "Enable IPFIX provider (TerminAttr default is true).\nThis flag is enabled by default and does not have to be added to the daemon configuration.\n", - "title": "Ipfix" - }, - "ipfixaddr": { - "type": "string", - "description": "ECO IPFIX Collector address to listen on to receive IPFIX packets (TerminAttr default \"127.0.0.1:4739\").\n", - "title": "Ipfixaddr" - }, - "sflow": { - "type": "boolean", - "description": "Enable sFlow provider (TerminAttr default is true).\n", - "title": "Sflow" - }, - "sflowaddr": { - "type": "string", - "description": "ECO sFlow Collector address to listen on to receive sFlow packets (TerminAttr default \"127.0.0.1:6343\").\n", - "title": "Sflowaddr" - }, - "cvconfig": { - "type": "boolean", - "description": "Subscribe to dynamic device configuration from CloudVision (TerminAttr default is false).\n", - "title": "Cvconfig" - }, - "cvcompression": { - "type": "string", - "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\n\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", - "deprecated": true, - "title": "Cvcompression" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Daemon TerminAttr" - }, - "daemons": { - "type": "array", - "title": "Custom Daemons", - "description": "This will add a daemon to the eos configuration that is most useful when trying to run OpenConfig clients like ocprometheus.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Daemon Name.", - "title": "Name" - }, - "exec": { - "type": "string", - "description": "command to run as a daemon.\n", - "title": "Exec" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "required": [ - "exec", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "dhcp_relay": { - "type": "object", - "properties": { - "servers": { - "type": "array", - "items": { - "type": "string", - "description": "Server IP or Hostname." - }, - "title": "Servers" - }, - "tunnel_requests_disabled": { - "type": "boolean", - "title": "Tunnel Requests Disabled" - }, - "mlag_peerlink_requests_disabled": { - "type": "boolean", - "title": "MLAG Peerlink Requests Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "DHCP Relay" - }, - "dhcp_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "vrf": { - "type": "string", - "description": "VRF in which to configure the DHCP server, use `default` to indicate default VRF.", - "title": "VRF" - }, - "lease_time_ipv4": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time IPv4" - }, - "lease_time_ipv6": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time IPv6" - }, - "dns_domain_name_ipv4": { - "type": "string", - "title": "DNS Domain Name IPv4" - }, - "dns_domain_name_ipv6": { - "type": "string", - "title": "DNS Domain Name IPv6" - }, - "dns_servers_ipv4": { - "type": "array", - "minItems": 1, - "description": "List of DNS servers for IPv4 clients.", - "items": { - "type": "string", - "description": "IPv4 address of DNS server." - }, - "title": "DNS Servers IPv4" - }, - "dns_servers_ipv6": { - "type": "array", - "minItems": 1, - "description": "List of DNS servers for IPv6 clients.", - "items": { - "type": "string", - "description": "IPv6 address of DNS server." - }, - "title": "DNS Servers IPv6" - }, - "tftp_server": { - "type": "object", - "properties": { - "file_ipv4": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "description": "Name of TFTP file for IPv4 clients.", - "title": "File IPv4" - }, - "file_ipv6": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "description": "Name of TFTP file for IPv6 clients.", - "title": "File IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tftp Server" - }, - "ipv4_vendor_options": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vendor_id": { - "type": "string", - "title": "Vendor ID" - }, - "sub_options": { - "type": "array", - "items": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "title": "Code" - }, - "string": { - "type": "string", - "description": "String value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "title": "String" - }, - "ipv4_address": { - "type": "string", - "description": "IPv4 address value for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "title": "IPv4 Address" - }, - "array_ipv4_address": { - "type": "array", - "description": "Array of IPv4 addresses for suboption data.\nOnly one of `string`, `ipv4_address` and `array_ipv4_address` variables should be used for any one suboption.\nThe order of precedence if multiple of these variables are defined is `string` -> `ipv4_address` -> `array_ipv4_address`.", - "items": { - "type": "string" - }, - "title": "Array IPv4 Address" - } - }, - "required": [ - "code" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sub Options" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "vendor_id" - ] - }, - "title": "IPv4 Vendor Options" - }, - "subnets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "subnet": { - "description": "IPv4/IPv6 subnet.", - "type": "string", - "title": "Subnet" - }, - "name": { - "type": "string", - "title": "Name" - }, - "default_gateway": { - "type": "string", - "title": "Default Gateway" - }, - "dns_servers": { - "type": "array", - "items": { - "type": "string" - }, - "title": "DNS Servers" - }, - "ranges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "start": { - "type": "string", - "title": "Start" - }, - "end": { - "type": "string", - "title": "End" - } - }, - "required": [ - "start", - "end" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Ranges" - }, - "lease_time": { - "type": "object", - "properties": { - "days": { - "type": "integer", - "minimum": 0, - "maximum": 2000, - "title": "Days" - }, - "hours": { - "type": "integer", - "minimum": 0, - "maximum": 23, - "title": "Hours" - }, - "minutes": { - "type": "integer", - "minimum": 0, - "maximum": 59, - "title": "Minutes" - } - }, - "required": [ - "days", - "hours", - "minutes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Lease Time" - }, - "reservations": { - "description": "DHCP client reservations.", - "type": "array", - "items": { - "type": "object", - "properties": { - "mac_address": { - "type": "string", - "description": "Ethernet address in format - HHHH.HHHH.HHHH", - "title": "MAC Address" - }, - "hostname": { - "type": "string", - "title": "Hostname" - }, - "ipv4_address": { - "type": "string", - "description": "Valid IPv4 address from the given subnet.\nThis should only be used within an IPv4 subnet.", - "title": "IPv4 Address" - }, - "ipv6_address": { - "type": "string", - "description": "Valid IPv6 address from the given subnet.\nThis should only be used within an IPv6 subnet.", - "title": "IPv6 Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "mac_address" - ] - }, - "title": "Reservations" - } - }, - "required": [ - "subnet" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Subnets" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the dhcp server in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "vrf" - ] - }, - "title": "DHCP Servers" - }, - "dns_domain": { - "type": "string", - "description": "Domain Name.", - "title": "DNS Domain" - }, - "domain_list": { - "type": "array", - "description": "Search list of DNS domains.", - "items": { - "type": "string", - "description": "Domain name." - }, - "title": "Domain List" - }, - "dot1x": { - "type": "object", - "title": "Global 802.1x Authentication", - "properties": { - "system_auth_control": { - "type": "boolean", - "title": "System Auth Control" - }, - "protocol_lldp_bypass": { - "type": "boolean", - "title": "Protocol LLDP Bypass" - }, - "protocol_bpdu_bypass": { - "type": "boolean", - "title": "Protocol Bpdu Bypass" - }, - "dynamic_authorization": { - "type": "boolean", - "title": "Dynamic Authorization" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "delay": { - "type": "integer", - "minimum": 0, - "maximum": 300, - "title": "Delay" - }, - "hold_period": { - "type": "integer", - "minimum": 1, - "maximum": 300, - "title": "Hold Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "radius_av_pair": { - "type": "object", - "properties": { - "service_type": { - "type": "boolean", - "title": "Service Type" - }, - "framed_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 9236, - "title": "Framed MTU" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Radius Av Pair" - }, - "aaa": { - "type": "object", - "description": "Configure AAA parameters.", - "properties": { - "unresponsive": { - "type": "object", - "description": "Configure AAA timeout options.", - "properties": { - "eap_response": { - "type": "string", - "description": "EAP response to send.", - "enum": [ - "success", - "disabled" - ], - "title": "Eap Response" - }, - "action": { - "type": "object", - "description": "Set action for supplicant when AAA times out.", - "properties": { - "apply_cached_results": { - "type": "boolean", - "description": "Use results from a previous AAA response.", - "title": "Apply Cached Results" - }, - "cached_results_timeout": { - "type": "object", - "properties": { - "time_duration": { - "type": "integer", - "minimum": 1, - "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", - "title": "Time Duration" - }, - "time_duration_unit": { - "type": "string", - "enum": [ - "days", - "hours", - "minutes", - "seconds" - ], - "title": "Time Duration Unit" - } - }, - "required": [ - "time_duration_unit" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cached Results Timeout" - }, - "apply_alternate": { - "type": "boolean", - "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive action apply cached-results else traffic allow", - "title": "Apply Alternate" - }, - "traffic_allow": { - "type": "boolean", - "description": "Set action for supplicant traffic when AAA times out.", - "title": "Traffic Allow" - }, - "traffic_allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Traffic Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Action" - }, - "phone_action": { - "type": "object", - "description": "Set action for supplicant when AAA times out.", - "properties": { - "apply_cached_results": { - "type": "boolean", - "description": "Use results from a previous AAA response.", - "title": "Apply Cached Results" - }, - "cached_results_timeout": { - "type": "object", - "properties": { - "time_duration": { - "type": "integer", - "minimum": 1, - "description": "Enable caching for a specific duration -\n<1-10000> duration in days\n<1-14400000> duration in minutes\n<1-240000> duration in hours\n<1-864000000> duration in seconds", - "title": "Time Duration" - }, - "time_duration_unit": { - "type": "string", - "enum": [ - "days", - "hours", - "minutes", - "seconds" - ], - "title": "Time Duration Unit" - } - }, - "required": [ - "time_duration_unit" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cached Results Timeout" - }, - "apply_alternate": { - "type": "boolean", - "description": "Apply alternate action if primary action fails.\neg. aaa unresponsive phone action apply cached-results else traffic allow", - "title": "Apply Alternate" - }, - "traffic_allow": { - "description": "Set action for supplicant traffic when AAA times out.", - "type": "boolean", - "title": "Traffic Allow" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone Action" - }, - "recovery_action_reauthenticate": { - "type": "boolean", - "title": "Recovery Action Reauthenticate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unresponsive" - }, - "accounting_update_interval": { - "type": "integer", - "minimum": 5, - "maximum": 65535, - "description": "Interval period in seconds.", - "title": "Accounting Update Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "AAA" - }, - "captive_portal": { - "type": "object", - "description": "Web authentication feature authenticates a supplicant through a web page, referred to as a captive portal.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "url": { - "type": "string", - "description": "Supported URL type:\n - http: http://[:]\n - https: https://[:]", - "title": "URL" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - }, - "start_limit_infinite": { - "type": "boolean", - "description": "Set captive-portal start limit to infinte.", - "title": "Start Limit Infinite" - }, - "access_list_ipv4": { - "type": "string", - "description": "Standard access-list name.", - "title": "Access List IPv4" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Captive Portal" - }, - "supplicant": { - "type": "object", - "properties": { - "profiles": { - "description": "Dot1x supplicant profiles.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "eap_method": { - "type": "string", - "description": "Extensible Authentication Protocol method:\n - EAP Flexible Authentication via Secure Tunneling.\n - EAP with Transport Layer Security.", - "enum": [ - "fast", - "tls" - ], - "title": "Eap Method" - }, - "identity": { - "type": "string", - "description": "User identity.", - "title": "Identity" - }, - "passphrase_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Passphrase Type" - }, - "passphrase": { - "type": "string", - "description": "Extensible Authentication Protocol password.", - "title": "Passphrase" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "logging": { - "type": "boolean", - "description": "Enable supplicant logging.", - "title": "Logging" - }, - "disconnect_cached_results_timeout": { - "type": "integer", - "minimum": 60, - "maximum": 65535, - "description": "Timeout in seconds for removing a disconnected supplicant.", - "title": "Disconnect Cached Results Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Supplicant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "dps_interfaces": { - "type": "array", - "minItems": 1, - "maxItems": 1, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "\"Dps1\" is currently the only supported interface.", - "enum": [ - "Dps1" - ], - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "mtu": { - "type": "integer", - "description": "Maximum Transmission Unit in bytes.", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name,", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment Size for IPv4.", - "minimum": 64, - "maximum": 65495, - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment Size for IPv6.", - "minimum": 64, - "maximum": 65475, - "title": "IPv6" - }, - "direction": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Dps interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "DPS Interfaces" - }, - "dynamic_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Dynamic prefix-list name.", - "title": "Name" - }, - "match_map": { - "type": "string", - "description": "Route-map name.", - "title": "Match Map" - }, - "prefix_list": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "description": "Prefix-list name.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Prefix-list name.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic Prefix Lists" - }, - "enable_password": { - "type": "object", - "properties": { - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.\n", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Enable Password" - }, - "eos_cli": { - "type": "string", - "description": "Multiline string with EOS CLI rendered directly on the root level of the final EOS configuration.", - "title": "EOS CLI" - }, - "eos_cli_config_gen_configuration": { - "type": "object", - "properties": { - "hide_passwords": { - "type": "boolean", - "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the configuration if true.\n", - "default": false, - "title": "Hide Passwords" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EOS CLI Config Gen Configuration" - }, - "eos_cli_config_gen_documentation": { - "type": "object", - "properties": { - "hide_passwords": { - "type": "boolean", - "description": "Replace the input data using the `hide_passwords` filter in the Jinja2 templates by '' in the documentation if true.\n", - "default": true, - "title": "Hide Passwords" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EOS CLI Config Gen Documentation" - }, - "errdisable": { - "type": "object", - "properties": { - "detect": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "acl", - "arp-inspection", - "dot1x", - "link-change", - "tapagg", - "xcvr-misconfigured", - "xcvr-overheat", - "xcvr-power-unsupported" - ] - }, - "title": "Causes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Detect" - }, - "recovery": { - "type": "object", - "properties": { - "causes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "arp-inspection", - "bpduguard", - "dot1x", - "hitless-reload-down", - "lacp-rate-limit", - "link-flap", - "no-internal-vlan", - "portchannelguard", - "portsec", - "speed-misconfigured", - "tap-port-init", - "tapagg", - "uplink-failure-detection", - "xcvr-misconfigured", - "xcvr-overheat", - "xcvr-power-unsupported", - "xcvr-unsupported" - ] - }, - "title": "Causes" - }, - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "default": 300, - "minimum": 30, - "maximum": 86400, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Recovery" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Errdisable" - }, - "ethernet_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "load_interval": { - "type": "integer", - "minimum": 0, - "maximum": 600, - "description": "Interval in seconds for updating interface counters.", - "title": "Load Interval" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "native_vlan": { - "type": "integer", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "tagged phone", - "untagged", - "untagged phone" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q", - "port-channel-member" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "address_locking": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Enable address locking for IPv4.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Enable address locking for IPv6.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "desired", - "on", - "off" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "error_correction_encoding": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "fire_code": { - "type": "boolean", - "title": "Fire Code" - }, - "reed_solomon": { - "type": "boolean", - "title": "Reed Solomon" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Error Correction Encoding" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulations are all optional and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask or \"dhcp\".", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string" - }, - "title": "IP Address Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "dhcp_client_accept_default_route": { - "type": "boolean", - "description": "Install default-route obtained via DHCP.", - "title": "DHCP Client Accept Default Route" - }, - "dhcp_server_ipv4": { - "type": "boolean", - "description": "Enable IPv4 DHCP server.", - "title": "DHCP Server IPv4" - }, - "dhcp_server_ipv6": { - "type": "boolean", - "description": "Enable IPv6 DHCP server.", - "title": "DHCP Server IPv6" - }, - "ip_helpers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_nat": { - "type": "object", - "properties": { - "service_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Service Profile" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "multicast": { - "type": "object", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "mac_security": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Security" - }, - "tcp_mss_ceiling": { - "type": "object", - "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", - "properties": { - "ipv4_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv4 Segment Size" - }, - "ipv6_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv6 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "channel_group": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "mode": { - "type": "string", - "enum": [ - "on", - "active", - "passive" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Channel Group" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "poe": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "profile": { - "type": "string", - "description": "Interface profile.", - "title": "Profile" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "congestion_drops": { - "type": "boolean", - "title": "Congestion Drops" - }, - "spanning_tree": { - "type": "boolean", - "title": "Spanning Tree" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "dot1x": { - "type": "object", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Value can be 60-4294967295 or 'server'.", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - }, - "eapol": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "authentication_failure_fallback_mba": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure Fallback Mba" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Eapol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "priority_flow_control": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "priorities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "title": "No Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "priority" - ] - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "lacp_timer": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "fast", - "normal" - ], - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 3000, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "lacp_port_priority": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "LACP Port Priority" - }, - "transceiver": { - "type": "object", - "properties": { - "frequency": { - "type": "string", - "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", - "title": "Frequency" - }, - "frequency_unit": { - "type": "string", - "enum": [ - "ghz" - ], - "description": "Unit of Transceiver Laser Frequency.", - "title": "Frequency Unit" - }, - "media": { - "type": "object", - "properties": { - "override": { - "type": "string", - "description": "Transceiver type.", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Media" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transceiver" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "sync_e": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "priority": { - "type": "string", - "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "port_profile": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Port Profile" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Uc TX Queues" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "max", - "max_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "TX Queues" - }, - "vrrp_ids": { - "type": "array", - "description": "VRRP model.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "switchport": { - "type": "object", - "properties": { - "port_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "mac_address_maximum": { - "type": "object", - "description": "Maximum number of MAC addresses allowed on the interface.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable port level check for port security (only in violation 'shutdown' mode).", - "title": "Disabled" - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "MAC address limit.", - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Maximum" - }, - "violation": { - "type": "object", - "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "shutdown", - "protect" - ], - "description": "Configure port security mode.", - "title": "Mode" - }, - "protect_log": { - "type": "boolean", - "description": "Log new addresses seen after limit is reached in protect mode.", - "title": "Protect Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Violation" - }, - "vlan_default_mac_address_maximum": { - "type": "integer", - "minimum": 0, - "maximum": 1000, - "description": "Default maximum MAC addresses for all VLANs on this interface.", - "title": "VLAN Default MAC Address Maximum" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", - "title": "Range" - }, - "mac_address_maximum": { - "type": "integer", - "title": "MAC Address Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "range" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Security" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ethernet Interfaces" - }, - "event_handlers": { - "type": "array", - "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Event Handler Name.", - "title": "Name" - }, - "action_type": { - "type": "string", - "enum": [ - "bash", - "increment", - "log" - ], - "title": "Action Type" - }, - "action": { - "type": "string", - "description": "Command to execute.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.actions instead.", - "deprecated": true, - "title": "Action" - }, - "actions": { - "type": "object", - "description": "Note: `bash_command` and `log` are mutually exclusive. `bash_command` takes precedence over `log`.", - "properties": { - "bash_command": { - "type": "string", - "description": "Define BASH command action. Command could be multiline also.", - "title": "Bash Command" - }, - "log": { - "type": "boolean", - "description": "Log a message when the event is triggered.", - "title": "Log" - }, - "increment_device_health_metric": { - "type": "string", - "description": "Name of device-health metric.", - "title": "Increment Device Health Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Actions" - }, - "delay": { - "type": "integer", - "description": "Event-handler delay in seconds.\n", - "title": "Delay" - }, - "trigger": { - "type": "string", - "description": "Configure event trigger condition.\n", - "enum": [ - "on-boot", - "on-counters", - "on-intf", - "on-logging", - "on-maintenance", - "on-startup-config", - "vm-tracer vm" - ], - "title": "Trigger" - }, - "trigger_on_counters": { - "type": "object", - "properties": { - "condition": { - "type": "string", - "description": "Set the logical expression to evaluate.", - "title": "Condition" - }, - "granularity_per_source": { - "type": "boolean", - "description": "Set the granularity of event counting for a wildcarded condition.\nExample -\n condition ( Arad*.IptCrcErrCnt.delta > 100 ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n [* wildcard is used here]", - "title": "Granularity Per Source" - }, - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Counters" - }, - "trigger_on_logging": { - "type": "object", - "properties": { - "poll_interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000000, - "description": "Set the polling interval in seconds.", - "title": "Poll Interval" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages.", - "title": "Regex" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Logging" - }, - "trigger_on_intf": { - "type": "object", - "description": "Trigger condition occurs on specified interface changes.\nNote: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined along with the `interface`.", - "properties": { - "interface": { - "type": "string", - "description": "Interface name.\nExample - Ethernet4\n Loopback4-6\n Port-channel4,7", - "title": "Interface" - }, - "ip": { - "type": "boolean", - "description": "Action is triggered upon changes to interface IP address assignment.", - "title": "IP" - }, - "ipv6": { - "type": "boolean", - "description": "Action is triggered upon changes to interface ipv6 address assignment.", - "title": "IPv6" - }, - "operstatus": { - "type": "boolean", - "description": "Action is triggered upon changes to interface operStatus.", - "title": "Operstatus" - } - }, - "required": [ - "interface" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Intf" - }, - "trigger_on_maintenance": { - "description": "Settings required for trigger 'on-maintenance'.", - "type": "object", - "properties": { - "operation": { - "type": "string", - "enum": [ - "enter", - "exit" - ], - "title": "Operation" - }, - "bgp_peer": { - "description": "Ipv4/Ipv6 address or peer group name.\nTrigger condition occurs on maintenance operation of specified BGP peer.", - "type": "string", - "title": "BGP Peer" - }, - "action": { - "type": "string", - "description": "Action for maintenance operation.", - "enum": [ - "after", - "before", - "all", - "begin", - "end" - ], - "title": "Action" - }, - "stage": { - "type": "string", - "description": "Action is triggered after/before specified stage.", - "enum": [ - "bgp", - "linkdown", - "mlag", - "ratemon" - ], - "title": "Stage" - }, - "vrf": { - "type": "string", - "description": "VRF name. VRF can be defined for \"bgp_peer\" only.", - "title": "VRF" - }, - "interface": { - "type": "string", - "description": "Trigger condition occurs on maintenance operation of specified interface.", - "title": "Interface" - }, - "unit": { - "type": "string", - "description": "Name of unit. Trigger condition occurs on maintenance operation of specified unit", - "title": "Unit" - } - }, - "required": [ - "operation", - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trigger On Maintenance" - }, - "regex": { - "type": "string", - "description": "Regular expression to use for searching log messages. Required for on-logging trigger.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use event_handlers.trigger_on_logging.regex instead.", - "deprecated": true, - "title": "Regex" - }, - "asynchronous": { - "type": "boolean", - "default": false, - "description": "Set the action to be non-blocking.\n", - "title": "Asynchronous" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Event Handlers" - }, - "event_monitor": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event Monitor" - }, - "flow_tracking": { - "type": "object", - "properties": { - "sampled": { - "type": "object", - "properties": { - "encapsulation": { - "type": "object", - "properties": { - "ipv4_ipv6": { - "type": "boolean", - "title": "IPv4 IPv6" - }, - "mpls": { - "type": "boolean", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation" - }, - "sample": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Sample" - }, - "hardware_offload": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Configure hardware offload for IPv4 traffic.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Configure hardware offload for IPv6 traffic.", - "title": "IPv6" - }, - "threshold_minimum": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "description": "Minimum number of samples.", - "title": "Threshold Minimum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Offload" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "table_size": { - "type": "integer", - "minimum": 1, - "maximum": 614400, - "description": "Maximum number of entries in flow table.\n", - "title": "Table Size" - }, - "record_export": { - "type": "object", - "properties": { - "mpls": { - "type": "boolean", - "description": "Export MPLS forwarding information.", - "title": "MPLS" - }, - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sampled" - }, - "hardware": { - "type": "object", - "properties": { - "record": { - "type": "object", - "properties": { - "format_ipfix_standard_timestamps_counters": { - "type": "boolean", - "description": "Enable software export of IPFIX data records.", - "title": "Format Ipfix Standard Timestamps Counters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "record_export": { - "type": "object", - "properties": { - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "flow_trackings": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "sampled" - ], - "description": "Flow Tracking Type - only 'sampled' supported for now.", - "title": "Type" - }, - "sample": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "title": "Sample" - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracker Name.", - "title": "Name" - }, - "record_export": { - "type": "object", - "properties": { - "on_inactive_timeout": { - "type": "integer", - "minimum": 3000, - "maximum": 900000, - "description": "Flow record inactive export timeout in milliseconds.", - "title": "On Inactive Timeout" - }, - "on_interval": { - "type": "integer", - "minimum": 1000, - "maximum": 36000000, - "description": "Flow record export interval in milliseconds.", - "title": "On Interval" - }, - "mpls": { - "type": "boolean", - "description": "Export MPLS forwarding information.", - "title": "MPLS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Record Export" - }, - "exporters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Exporter Name.", - "title": "Name" - }, - "collector": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Collector IPv4 address or IPv6 address or fully qualified domain name.", - "title": "Host" - }, - "port": { - "type": "integer", - "description": "Collector Port Number.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collector" - }, - "format": { - "type": "object", - "properties": { - "ipfix_version": { - "type": "integer", - "title": "Ipfix Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "local_interface": { - "type": "string", - "description": "Local Source Interface.", - "title": "Local Interface" - }, - "template_interval": { - "type": "integer", - "minimum": 5000, - "maximum": 3600000, - "description": "Template interval in milliseconds.", - "title": "Template Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exporters" - }, - "table_size": { - "type": "integer", - "minimum": 1, - "maximum": 614400, - "description": "Maximum number of entries in flow table.\n", - "title": "Table Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Trackers" - }, - "shutdown": { - "type": "boolean", - "default": false, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "type" - ] - }, - "title": "Flow Trackings" - }, - "generate_default_config": { - "type": "boolean", - "default": true, - "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter\n", - "title": "Generate Default Config" - }, - "generate_device_documentation": { - "type": "boolean", - "default": true, - "title": "Generate Device Documentation" - }, - "hardware": { - "type": "object", - "properties": { - "access_list": { - "type": "object", - "properties": { - "mechanism": { - "type": "string", - "enum": [ - "algomatch", - "none", - "tcam" - ], - "title": "Mechanism" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List" - }, - "speed_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "speed_group": { - "type": "string", - "title": "Speed Group" - }, - "serdes": { - "type": "string", - "description": "Serdes speed like \"10g\" or \"25g\".", - "title": "Serdes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "speed_group" - ] - }, - "title": "Speed Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware" - }, - "hardware_counters": { - "type": "object", - "properties": { - "features": { - "type": "array", - "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsibility of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "acl", - "decap-group", - "directflow", - "ecn", - "flow-spec", - "gre tunnel interface", - "ip", - "mpls interface", - "mpls lfib", - "mpls tunnel", - "multicast", - "nexthop", - "pbr", - "pdp", - "policing interface", - "qos", - "qos dual-rate-policer", - "route", - "routed-port", - "segment-security", - "subinterface", - "tapagg", - "traffic-class", - "traffic-policy", - "vlan", - "vlan-interface", - "vni decap", - "vni encap", - "vtep decap", - "vtep encap" - ], - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "cpu" - ], - "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n", - "title": "Direction" - }, - "address_type": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "mac" - ], - "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n", - "title": "Address Type" - }, - "layer3": { - "type": "boolean", - "description": "Supported only for the 'ip' feature.\n", - "title": "Layer3" - }, - "vrf": { - "type": "string", - "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "VRF" - }, - "prefix": { - "type": "string", - "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n", - "title": "Prefix" - }, - "units_packets": { - "type": "boolean", - "title": "Units Packets" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Features" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Counters" - }, - "hostname": { - "type": "string", - "title": "Hostname" - }, - "interface_defaults": { - "type": "object", - "properties": { - "ethernet": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet" - }, - "mtu": { - "type": "integer", - "title": "MTU" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface Defaults" - }, - "interface_groups": { - "type": "array", - "title": "Maintenance Interface Groups", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface-Group name.", - "title": "Name" - }, - "interfaces": { - "type": "array", - "items": { - "type": "string", - "description": "Interface Name." - }, - "title": "Interfaces" - }, - "bgp_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Name of BGP Maintenance Profile." - }, - "title": "BGP Maintenance Profiles" - }, - "interface_maintenance_profiles": { - "type": "array", - "items": { - "type": "string", - "description": "Name of Interface Maintenance Profile." - }, - "title": "Interface Maintenance Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - } - }, - "interface_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface-Profile Name.", - "title": "Name" - }, - "commands": { - "type": "array", - "items": { - "type": "string", - "description": "EOS CLI interface command.\nExample: \"switchport mode access\"\n" - }, - "title": "Commands" - } - }, - "required": [ - "commands", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Profiles" - }, - "ip_access_lists": { - "type": "array", - "title": "IP Extended Access-Lists (improved model)", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "entries": { - "type": "array", - "description": "ACL Entries.", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "ACL entry sequence number.", - "title": "Sequence" - }, - "remark": { - "type": "string", - "description": "Comment up to 100 characters.\nIf remark is defined, other keys in the ACL entry will be ignored.", - "title": "Remark" - }, - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "description": "ACL action.\nRequired except for remarks.", - "title": "Action" - }, - "protocol": { - "type": "string", - "description": "\"ip\", \"tcp\", \"udp\", \"icmp\" or other protocol name or number.\nRequired except for remarks.", - "title": "Protocol" - }, - "source": { - "type": "string", - "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Source" - }, - "source_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Source Ports Match" - }, - "source_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP source port name or number." - }, - "title": "Source Ports" - }, - "destination": { - "type": "string", - "description": "\"any\", \"/\" or \"\".\n\"\" without a mask means host.\nRequired except for remarks.", - "title": "Destination" - }, - "destination_ports_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq", - "range" - ], - "default": "eq", - "title": "Destination Ports Match" - }, - "destination_ports": { - "type": "array", - "items": { - "type": "string", - "description": "TCP/UDP destination port name or number." - }, - "title": "Destination Ports" - }, - "tcp_flags": { - "type": "array", - "items": { - "type": "string", - "description": "TCP Flag Name." - }, - "title": "TCP Flags" - }, - "fragments": { - "type": "boolean", - "description": "Match non-head fragment packets.", - "title": "Fragments" - }, - "log": { - "type": "boolean", - "description": "Log matches against this rule.", - "title": "Log" - }, - "ttl": { - "type": "integer", - "description": "TTL value.", - "minimum": 0, - "maximum": 255, - "title": "TTL" - }, - "ttl_match": { - "type": "string", - "enum": [ - "eq", - "gt", - "lt", - "neq" - ], - "default": "eq", - "title": "TTL Match" - }, - "icmp_type": { - "type": "string", - "description": "Message type name/number for ICMP packets.", - "title": "ICMP Type" - }, - "icmp_code": { - "type": "string", - "description": "Message code for ICMP packets.", - "title": "ICMP Code" - }, - "nexthop_group": { - "type": "string", - "description": "nexthop-group name.", - "title": "Nexthop Group" - }, - "tracked": { - "type": "boolean", - "description": "Match packets in existing ICMP/UDP/TCP connections.", - "title": "Tracked" - }, - "dscp": { - "type": "string", - "description": "DSCP value or name.", - "title": "DSCP" - }, - "vlan_number": { - "type": "integer", - "title": "VLAN Number" - }, - "vlan_inner": { - "type": "boolean", - "default": false, - "title": "VLAN Inner" - }, - "vlan_mask": { - "type": "string", - "description": "0x000-0xFFF VLAN mask.", - "title": "VLAN Mask" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - } - }, - "ip_access_lists_max_entries": { - "type": "integer", - "description": "Limit ACL entries defined under the `ip_access_lists`.", - "title": "IP Access Lists Max Entries" - }, - "ip_community_lists": { - "type": "array", - "title": "IP Community Lists", - "description": "Communities and regexp entries MUST not be configured in the same community-list.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IP Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Action" - }, - "communities": { - "type": "array", - "items": { - "type": "string" - }, - "description": "If defined, a standard community-list will be configured.\nSupported community strings (case insensitive):\n- GSHUT\n- internet\n- local-as\n- no-advertise\n- no-export\n- <1-4294967040>\n- aa:nn\n", - "title": "Communities" - }, - "regexp": { - "type": "string", - "description": "Regular Expression.\nIf defined, a regex community-list will be configured.\n", - "title": "RegExp" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_dhcp_relay": { - "type": "object", - "properties": { - "always_on": { - "type": "boolean", - "description": "DhcpRelay Agent will be in always-on mode.", - "title": "Always On" - }, - "all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "All Subnets" - }, - "information_option": { - "type": "boolean", - "description": "Insert Option-82 information.", - "title": "Information Option" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP DHCP Relay" - }, - "ip_dhcp_snooping": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "bridging": { - "type": "boolean", - "title": "Bridging" - }, - "information_option": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable insertion of option-82 in DHCP request packets.", - "title": "Enabled" - }, - "circuit_id_type": { - "type": "string", - "description": "\"none\" or <0 - 255>.", - "title": "Circuit ID Type" - }, - "circuit_id_format": { - "type": "string", - "description": "Required if `circuit_id_type` is set.\n- \"%h:%p\" Hostname and interface name\n- \"%p:%v\" Interface name and VLAN ID", - "enum": [ - "%h:%p", - "%p:%v" - ], - "title": "Circuit ID Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Information Option" - }, - "vlan": { - "type": "string", - "description": "VLAN range as string.\n\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18", - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP DHCP Snooping" - }, - "ip_domain_lookup": { - "type": "object", - "properties": { - "source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Source Interface.\n", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Source Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Domain Lookup" - }, - "ip_extcommunity_lists": { - "type": "array", - "title": "IP Extended Community Lists", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "extcommunities": { - "type": "string", - "description": "Communities as string.\nExample: \"65000:65000\"\n", - "title": "Extcommunities" - } - }, - "required": [ - "type", - "extcommunities" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_extcommunity_lists_regexp": { - "type": "array", - "title": "IP Extended Community Lists RegExp", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community-list Name.", - "title": "Name" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "regexp": { - "type": "string", - "description": "Regular Expression.", - "title": "RegExp" - } - }, - "required": [ - "type", - "regexp" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "required": [ - "entries", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_ftp_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Ftp Client Source Interfaces" - }, - "ip_hardware": { - "type": "object", - "properties": { - "fib": { - "type": "object", - "properties": { - "optimize": { - "type": "object", - "properties": { - "prefixes": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "enum": [ - "internet", - "urpf-internet" - ], - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Optimize" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fib" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Hardware" - }, - "ip_http_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Interface Name.", - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP HTTP Client Source Interfaces" - }, - "ip_icmp_redirect": { - "type": "boolean", - "title": "IP ICMP Redirect" - }, - "ip_igmp_snooping": { - "type": "object", - "properties": { - "globally_enabled": { - "type": "boolean", - "default": true, - "description": "Activate or deactivate IGMP snooping for all vlans where `vlans` allows user to activate / deactivate IGMP snooping per vlan.", - "title": "Globally Enabled" - }, - "robustness_variable": { - "type": "integer", - "title": "Robustness Variable" - }, - "restart_query_interval": { - "type": "integer", - "title": "Restart Query Interval" - }, - "interface_restart_query": { - "type": "integer", - "title": "Interface Restart Query" - }, - "fast_leave": { - "type": "boolean", - "title": "Fast Leave" - }, - "querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "address": { - "type": "string", - "description": "IP Address.", - "title": "Address" - }, - "query_interval": { - "type": "integer", - "title": "Query Interval" - }, - "max_response_time": { - "type": "integer", - "title": "Max Response Time" - }, - "last_member_query_interval": { - "type": "integer", - "title": "Last Member Query Interval" - }, - "last_member_query_count": { - "type": "integer", - "title": "Last Member Query Count" - }, - "startup_query_interval": { - "type": "integer", - "title": "Startup Query Interval" - }, - "startup_query_count": { - "type": "integer", - "title": "Startup Query Count" - }, - "version": { - "type": "integer", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Querier" - }, - "proxy": { - "type": "boolean", - "title": "Proxy" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "address": { - "type": "string", - "description": "IP Address.", - "title": "Address" - }, - "query_interval": { - "type": "integer", - "title": "Query Interval" - }, - "max_response_time": { - "type": "integer", - "title": "Max Response Time" - }, - "last_member_query_interval": { - "type": "integer", - "title": "Last Member Query Interval" - }, - "last_member_query_count": { - "type": "integer", - "title": "Last Member Query Count" - }, - "startup_query_interval": { - "type": "integer", - "title": "Startup Query Interval" - }, - "startup_query_count": { - "type": "integer", - "title": "Startup Query Count" - }, - "version": { - "type": "integer", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Querier" - }, - "max_groups": { - "type": "integer", - "title": "Max Groups" - }, - "fast_leave": { - "type": "boolean", - "title": "Fast Leave" - }, - "proxy": { - "type": "boolean", - "description": "Global proxy settings should be enabled before enabling per-vlan.\n", - "title": "Proxy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Snooping" - }, - "ip_name_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "description": "IPv4 or IPv6 address for DNS server.", - "title": "IP Address" - }, - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - }, - "priority": { - "description": "Priority value (lower is first).", - "type": "integer", - "minimum": 0, - "maximum": 4, - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Name Servers" - }, - "ip_nat": { - "type": "object", - "properties": { - "kernel_buffer_size": { - "type": "integer", - "minimum": 1, - "maximum": 64, - "description": "Buffer size in MB.", - "title": "Kernel Buffer Size" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "Specify VRF for NAT profile.", - "title": "VRF" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "pools": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "ip-port", - "port-only" - ], - "default": "ip-port", - "title": "Type" - }, - "prefix_length": { - "type": "integer", - "minimum": 16, - "maximum": 32, - "description": "It is only used and required when `type` is `ip-port`.", - "title": "Prefix Length" - }, - "ranges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "first_ip": { - "type": "string", - "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.", - "title": "First IP" - }, - "last_ip": { - "type": "string", - "description": "IPv4 address.\nRequired when `type` is `ip-port` and ignored otherwise.\n`first_ip` and `last_ip` ip addresses should lie in same subnet.", - "title": "Last IP" - }, - "first_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "First Port" - }, - "last_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Required when `first_port` is set.\n`last_port` must be greater than or equal to `first_port`.", - "title": "Last Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Ranges" - }, - "utilization_log_threshold": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "title": "Utilization Log Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Pools" - }, - "synchronization": { - "type": "object", - "properties": { - "description": { - "type": "string", - "title": "Description" - }, - "expiry_interval": { - "type": "integer", - "minimum": 60, - "maximum": 3600, - "description": "In seconds.", - "title": "Expiry Interval" - }, - "local_interface": { - "type": "string", - "description": "EOS interface name.", - "title": "Local Interface" - }, - "peer_address": { - "type": "string", - "description": "IPv4 address.", - "title": "Peer Address" - }, - "port_range": { - "type": "object", - "properties": { - "first_port": { - "type": "integer", - "minimum": 1024, - "maximum": 65535, - "title": "First Port" - }, - "last_port": { - "type": "integer", - "minimum": 1024, - "maximum": 65535, - "description": ">= first_port.", - "title": "Last Port" - }, - "split_disabled": { - "type": "boolean", - "title": "Split Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Range" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Synchronization" - }, - "translation": { - "type": "object", - "properties": { - "address_selection": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "hash_field_source_ip": { - "type": "boolean", - "title": "Hash Field Source IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Selection" - }, - "counters": { - "type": "boolean", - "title": "Counters" - }, - "low_mark": { - "type": "object", - "properties": { - "percentage": { - "type": "integer", - "minimum": 1, - "maximum": 99, - "description": "Used to render 'ip nat translation low-mark '.", - "title": "Percentage" - }, - "host_percentage": { - "type": "integer", - "minimum": 1, - "maximum": 99, - "description": "Used to render 'ip nat translation low-mark host'.", - "title": "Host Percentage" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Low Mark" - }, - "max_entries": { - "type": "object", - "properties": { - "limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Limit" - }, - "host_limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Host Limit" - }, - "ip_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip": { - "type": "string", - "description": "IPv4 address.", - "title": "IP" - }, - "limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Limit" - } - }, - "required": [ - "limit", - "ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Limits" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Max Entries" - }, - "timeouts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "title": "Protocol" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "In seconds.", - "title": "Timeout" - } - }, - "required": [ - "timeout", - "protocol" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Timeouts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Translation" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ip_radius_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Radius Source Interfaces" - }, - "ip_routing": { - "type": "boolean", - "title": "IP Routing" - }, - "ip_routing_ipv6_interfaces": { - "type": "boolean", - "title": "IP Routing IPv6 Interfaces" - }, - "ip_security": { - "type": "object", - "properties": { - "ike_policies": { - "type": "array", - "description": "Internet Security Association and Key Mgmt Protocol.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "local_id": { - "type": "string", - "description": "Local IKE identification.\nCan be an IPv4 or an IPv6 address.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", - "title": "Local ID" - }, - "local_id_fqdn": { - "type": "string", - "description": "Local FQDN or UFQDN IKE identification.\nIf both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes precedence.", - "title": "Local ID Fqdn" - }, - "ike_lifetime": { - "type": "integer", - "minimum": 1, - "maximum": 24, - "description": "IKE lifetime in hours.", - "title": "Ike Lifetime" - }, - "encryption": { - "type": "string", - "enum": [ - "3des", - "aes128", - "aes256" - ], - "description": "IKE encryption algorithm.", - "title": "Encryption" - }, - "dh_group": { - "type": "integer", - "enum": [ - 1, - 2, - 5, - 14, - 15, - 16, - 17, - 20, - 21, - 24 - ], - "description": "Diffie-Hellman group for the key exchange.", - "title": "Dh Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ike Policies" - }, - "sa_policies": { - "type": "array", - "description": "Security Association policies.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the SA policy. The \"null\" value is deprecated and will be removed in AVD 5.0.0.", - "title": "Name" - }, - "sa_lifetime": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "description": "Lifetime value for this SA.\nValid range depends on the unit.\n<1-24> Lifetime in hours ( default )\n<1-4000000> Packet limit in thousands\n<1-6000> Byte limit in GB ( 1024 MB )\n<1-6144000> Byte limit in MB ( 1024 KB )", - "title": "Value" - }, - "unit": { - "type": "string", - "enum": [ - "gigabytes", - "hours", - "megabytes", - "thousand-packets" - ], - "default": "hours", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Lifetime" - }, - "esp": { - "type": "object", - "properties": { - "integrity": { - "type": "string", - "enum": [ - "disabled", - "sha1", - "sha256", - "null" - ], - "title": "Integrity" - }, - "encryption": { - "type": "string", - "enum": [ - "disabled", - "aes128", - "aes128gcm128", - "aes128gcm64", - "aes256", - "aes256gcm128", - "null" - ], - "title": "Encryption" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Esp" - }, - "pfs_dh_group": { - "type": "integer", - "enum": [ - 1, - 2, - 5, - 14, - 15, - 16, - 17, - 20, - 21, - 24 - ], - "title": "Pfs Dh Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Sa Policies" - }, - "profiles": { - "type": "array", - "description": "IPSec profiles.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the IPsec profile.", - "title": "Name" - }, - "ike_policy": { - "type": "string", - "description": "Name of the IKE policy to use in this profile.", - "title": "Ike Policy" - }, - "sa_policy": { - "type": "string", - "description": "Name of the Security Association to use in this profile.", - "title": "Sa Policy" - }, - "connection": { - "type": "string", - "description": "IPsec connection (Initiator/Responder/Dynamic).", - "enum": [ - "add", - "start", - "route" - ], - "title": "Connection" - }, - "shared_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Shared Key" - }, - "dpd": { - "type": "object", - "description": "Dead Peer Detection.", - "properties": { - "interval": { - "type": "integer", - "description": "Interval (in seconds) between keep-alive messages.", - "minimum": 2, - "maximum": 3600, - "title": "Interval" - }, - "time": { - "type": "integer", - "description": "Time (in seconds) after which the action is applied.", - "minimum": 10, - "maximum": 3600, - "title": "Time" - }, - "action": { - "type": "string", - "description": "Action to apply.\n\n* 'clear': Delete all connections\n* 'hold': Re-negotiate connection on demand\n* 'restart': Restart connection immediately\n", - "enum": [ - "clear", - "hold", - "restart" - ], - "title": "Action" - } - }, - "required": [ - "interval", - "time", - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dpd" - }, - "mode": { - "type": "string", - "description": "Ipsec mode type.", - "enum": [ - "transport", - "tunnel" - ], - "title": "Mode" - }, - "flow_parallelization_encapsulation_udp": { - "type": "boolean", - "description": "Enable flow parallelization.\nWhen enabled, multiple cores are used to parallelize the IPsec encryption and decryption processing.", - "title": "Flow Parallelization Encapsulation UDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "key_controller": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "IPsec profile name to use.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Key Controller" - }, - "hardware_encryption_disabled": { - "type": "boolean", - "default": false, - "description": "Disable hardware encryption.\nAn SFE restart is needed for this change to take effect.", - "title": "Hardware Encryption Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Security" - }, - "ip_ssh_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Interface Name.", - "type": "string", - "title": "Name" - }, - "vrf": { - "type": "string", - "default": "default", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP SSH Client Source Interfaces" - }, - "ip_tacacs_source_interfaces": { - "type": "array", - "title": "IP Tacacs Source Interfaces", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ip_telnet_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Telnet Client Source Interfaces" - }, - "ip_tftp_client_source_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IP Tftp Client Source Interfaces" - }, - "ip_virtual_router_mac_address": { - "type": "string", - "description": "MAC address (hh:hh:hh:hh:hh:hh).", - "title": "IP Virtual Router MAC Address" - }, - "ipv6_access_lists": { - "type": "array", - "title": "IPv6 Extended Access-Lists", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - } - }, - "ipv6_dhcp_relay": { - "type": "object", - "properties": { - "always_on": { - "type": "boolean", - "description": "DhcpRelay Agent will be in always-on mode, off by default.", - "title": "Always On" - }, - "all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "All Subnets" - }, - "option": { - "type": "object", - "description": "Insert DHCP Option.", - "properties": { - "link_layer_address": { - "type": "boolean", - "description": "Add Option 79 (Link Layer Address Option).", - "title": "Link Layer Address" - }, - "remote_id_format": { - "type": "string", - "enum": [ - "%m:%i", - "%m:%p" - ], - "description": "Add RemoteID option 37 in format MAC address and interface ID (`%m:%i`) or MAC address and interface name (`%m:%p`).", - "title": "Remote ID Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Option" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 DHCP Relay" - }, - "ipv6_hardware": { - "type": "object", - "properties": { - "fib": { - "type": "object", - "properties": { - "optimize": { - "type": "object", - "properties": { - "prefixes": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Pre-defined profile 'internet' or user-defined profile name.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Optimize" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fib" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Hardware" - }, - "ipv6_icmp_redirect": { - "type": "boolean", - "title": "IPv6 ICMP Redirect" - }, - "ipv6_neighbor": { - "type": "object", - "properties": { - "static_entries": { - "type": "array", - "description": "Static IPv6 neighbor entries.", - "items": { - "type": "object", - "properties": { - "ipv6_address": { - "type": "string", - "description": "IPv6 address of neighbor.", - "title": "IPv6 Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "interface": { - "type": "string", - "description": "Interface name.", - "title": "Interface" - }, - "mac_address": { - "type": "string", - "description": "MAC address of neighbor like 'aa:af:12:34:bc:bf'", - "pattern": "^([0-9a-f]{2}:){5}[0-9a-f]{2}$", - "title": "MAC Address" - } - }, - "required": [ - "ipv6_address", - "interface", - "mac_address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Entries" - }, - "persistent": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Restore the IPv6 neighbor cache after reboot.", - "title": "Enabled" - }, - "refresh_delay": { - "type": "integer", - "description": "Time to wait in seconds before refreshing the IPv6 neighbor cache after reboot (EOS default 600).\nIt will require setting the `enabled` key to true.\n", - "minimum": 600, - "maximum": 3600, - "title": "Refresh Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Persistent" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Neighbor" - }, - "ipv6_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Prefix Lists" - }, - "ipv6_standard_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ipv6 any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Standard Access Lists" - }, - "ipv6_static_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "title": "VRF" - }, - "destination_address_prefix": { - "type": "string", - "description": "IPv6 Network/Mask.", - "title": "Destination Address Prefix" - }, - "interface": { - "type": "string", - "title": "Interface" - }, - "gateway": { - "type": "string", - "description": "IPv6 Address.", - "title": "Gateway" - }, - "track_bfd": { - "type": "boolean", - "description": "Track next-hop using BFD.", - "title": "Track BFD" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - }, - "tag": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Tag" - }, - "name": { - "type": "string", - "description": "Description.", - "title": "Name" - }, - "metric": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Static Routes" - }, - "ipv6_unicast_routing": { - "type": "boolean", - "title": "IPv6 Unicast Routing" - }, - "is_deployed": { - "description": "Key only used for documentation or validation purposes.", - "type": "boolean", - "default": true, - "title": "Is Deployed" - }, - "l2_protocol": { - "type": "object", - "properties": { - "forwarding_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "bfd per-link rfc-7130", - "e-lmi", - "isis", - "lacp", - "lldp", - "macsec", - "pause", - "stp" - ], - "title": "Name" - }, - "forward": { - "type": "boolean", - "title": "Forward" - }, - "tagged_forward": { - "type": "boolean", - "title": "Tagged Forward" - }, - "untagged_forward": { - "type": "boolean", - "title": "Untagged Forward" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Forwarding Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "lacp": { - "type": "object", - "description": "Set Link Aggregation Control Protocol (LACP) parameters.", - "properties": { - "port_id": { - "type": "object", - "description": "LACP port-ID range configuration.", - "properties": { - "range": { - "type": "object", - "properties": { - "begin": { - "type": "integer", - "description": "Minimum LACP port-ID range.", - "title": "Begin" - }, - "end": { - "type": "integer", - "description": "Maximum LACP port-ID range.", - "title": "End" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Range" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port ID" - }, - "rate_limit": { - "type": "object", - "description": "Set LACPDU rate limit options.", - "properties": { - "default": { - "type": "boolean", - "description": "Enable LACPDU rate limiting by default on all ports.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rate Limit" - }, - "system_priority": { - "type": "integer", - "description": "Set local system LACP priority.", - "minimum": 0, - "maximum": 65535, - "title": "System Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "links_minimum": { - "type": "integer", - "minimum": 1, - "maximum": 100000, - "title": "Links Minimum" - }, - "recovery_delay": { - "type": "integer", - "minimum": 0, - "maximum": 3600, - "title": "Recovery Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "lldp": { - "type": "object", - "properties": { - "timer": { - "type": "integer", - "title": "Timer" - }, - "timer_reinitialization": { - "type": "string", - "title": "Timer Reinitialization" - }, - "holdtime": { - "type": "integer", - "title": "Holdtime" - }, - "management_address": { - "type": "string", - "title": "Management Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "receive_packet_tagged_drop": { - "type": "string", - "title": "Receive Packet Tagged Drop" - }, - "tlvs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "link-aggregation", - "management-address", - "max-frame-size", - "med", - "port-description", - "port-vlan", - "power-via-mdi", - "system-capabilities", - "system-description", - "system-name", - "vlan-name" - ], - "title": "Name" - }, - "transmit": { - "type": "boolean", - "title": "Transmit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "TLVs" - }, - "run": { - "type": "boolean", - "title": "Run" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "load_interval": { - "type": "object", - "properties": { - "default": { - "type": "integer", - "description": "Default load interval in seconds.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Load Interval" - }, - "local_users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Username.", - "type": "string", - "title": "Name" - }, - "disabled": { - "type": "boolean", - "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n", - "title": "Disabled" - }, - "privilege": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Initial privilege level with local EXEC authorization.\n", - "title": "Privilege" - }, - "role": { - "type": "string", - "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\".\n", - "title": "Role" - }, - "sha512_password": { - "type": "string", - "description": "SHA512 Hash of Password.\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n", - "title": "SHA512 Password" - }, - "no_password": { - "type": "boolean", - "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n", - "title": "No Password" - }, - "ssh_key": { - "type": "string", - "title": "SSH Key" - }, - "secondary_ssh_key": { - "type": "string", - "title": "Secondary SSH Key" - }, - "shell": { - "type": "string", - "description": "Specify shell for the user.\n", - "enum": [ - "/bin/bash", - "/bin/sh", - "/sbin/nologin" - ], - "title": "Shell" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Users" - }, - "logging": { - "type": "object", - "properties": { - "console": { - "type": "string", - "enum": [ - "debugging", - "informational", - "notifications", - "warnings", - "errors", - "critical", - "alerts", - "emergencies", - "disabled" - ], - "description": "Console logging severity level.\n", - "title": "Console" - }, - "monitor": { - "type": "string", - "enum": [ - "debugging", - "informational", - "notifications", - "warnings", - "errors", - "critical", - "alerts", - "emergencies", - "disabled" - ], - "description": "Monitor logging severity level.\n", - "title": "Monitor" - }, - "buffered": { - "type": "object", - "properties": { - "size": { - "type": "integer", - "minimum": 10, - "maximum": 2147483647, - "title": "Size" - }, - "level": { - "type": "string", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "disabled" - ], - "description": "Buffer logging severity level.\n", - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Buffered" - }, - "trap": { - "type": "string", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "system", - "warnings", - "disabled" - ], - "description": "Trap logging severity level.\n", - "title": "Trap" - }, - "synchronous": { - "type": "object", - "properties": { - "level": { - "type": "string", - "enum": [ - "alerts", - "all", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "disabled" - ], - "description": "Synchronous logging severity level.\n", - "default": "critical", - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Synchronous" - }, - "format": { - "type": "object", - "properties": { - "timestamp": { - "type": "string", - "enum": [ - "high-resolution", - "traditional", - "traditional timezone", - "traditional year", - "traditional timezone year", - "traditional year timezone" - ], - "description": "Timestamp format.", - "title": "Timestamp" - }, - "hostname": { - "type": "string", - "enum": [ - "fqdn", - "ipv4" - ], - "description": "Hostname format in syslogs. For hostname _only_, remove the line. (default EOS CLI behaviour).", - "title": "Hostname" - }, - "sequence_numbers": { - "type": "boolean", - "description": "Add sequence numbers to log messages.\n", - "title": "Sequence Numbers" - }, - "rfc5424": { - "type": "boolean", - "description": "Forward logs in RFC5424 format.\n", - "title": "Rfc5424" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Format" - }, - "facility": { - "type": "string", - "enum": [ - "auth", - "cron", - "daemon", - "kern", - "local0", - "local1", - "local2", - "local3", - "local4", - "local5", - "local6", - "local7", - "lpr", - "mail", - "news", - "sys9", - "sys10", - "sys11", - "sys12", - "sys13", - "sys14", - "syslog", - "user", - "uucp" - ], - "title": "Facility" - }, - "source_interface": { - "type": "string", - "description": "Source Interface Name.", - "title": "Source Interface" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Syslog server name.", - "title": "Name" - }, - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "default": "udp", - "title": "Protocol" - }, - "ports": { - "type": "array", - "items": { - "type": "integer" - }, - "title": "Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "policy": { - "type": "object", - "properties": { - "match": { - "type": "object", - "properties": { - "match_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Match list.", - "title": "Name" - }, - "action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Match Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy" - }, - "event": { - "type": "object", - "properties": { - "storm_control": { - "type": "object", - "properties": { - "discards": { - "type": "object", - "properties": { - "global": { - "type": "boolean", - "title": "Global" - }, - "interval": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "description": "Logging interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - }, - "level": { - "type": "array", - "description": "Configure logging severity.", - "items": { - "type": "object", - "properties": { - "facility": { - "type": "string", - "title": "Facility" - }, - "severity": { - "type": "string", - "description": "Severity of facility. Below are the supported severites.\nemergencies System is unusable (severity=0)\nalerts Immediate action needed (severity=1)\ncritical Critical conditions (severity=2)\nerrors Error conditions (severity=3)\nwarnings Warning conditions (severity=4)\nnotifications Normal but significant conditions (severity=5)\ninformational Informational messages (severity=6)\ndebugging Debugging messages (severity=7)\n<0-7> Severity level value", - "enum": [ - "alerts", - "critical", - "debugging", - "emergencies", - "errors", - "informational", - "notifications", - "warnings", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "title": "Severity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "facility" - ] - }, - "title": "Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "loopback_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Loopback interface name e.g. \"Loopback0\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "mpls": { - "type": "object", - "properties": { - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "node_segment": { - "type": "object", - "properties": { - "ipv4_index": { - "type": "integer", - "title": "IPv4 Index" - }, - "ipv6_index": { - "type": "integer", - "title": "IPv6 Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Node Segment" - }, - "eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the loopback interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Loopback Interfaces" - }, - "mac_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "MAC Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "entries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "title": "Sequence" - }, - "action": { - "type": "string", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Entries" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "MAC Access Lists" - }, - "mac_address_table": { - "type": "object", - "properties": { - "aging_time": { - "type": "integer", - "description": "Aging time in seconds.", - "title": "Aging Time" - }, - "notification_host_flap": { - "type": "object", - "properties": { - "logging": { - "type": "boolean", - "title": "Logging" - }, - "detection": { - "type": "object", - "properties": { - "window": { - "type": "integer", - "minimum": 2, - "maximum": 300, - "title": "Window" - }, - "moves": { - "type": "integer", - "minimum": 2, - "maximum": 10, - "title": "Moves" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Detection" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Notification Host Flap" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Table" - }, - "mac_security": { - "type": "object", - "title": "MAC Security (MACsec)", - "properties": { - "license": { - "type": "object", - "properties": { - "license_name": { - "type": "string", - "title": "License Name" - }, - "license_key": { - "type": "string", - "title": "License Key" - } - }, - "required": [ - "license_name", - "license_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "License" - }, - "fips_restrictions": { - "type": "boolean", - "title": "Fips Restrictions" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile-Name.", - "title": "Name" - }, - "cipher": { - "type": "string", - "enum": [ - "aes128-gcm", - "aes128-gcm-xpn", - "aes256-gcm", - "aes256-gcm-xpn" - ], - "title": "Cipher" - }, - "connection_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "encrypted_key": { - "type": "string", - "title": "Encrypted Key" - }, - "fallback": { - "type": "boolean", - "title": "Fallback" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Connection Keys" - }, - "mka": { - "type": "object", - "properties": { - "key_server_priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Key Server Priority" - }, - "session": { - "type": "object", - "properties": { - "rekey_period": { - "type": "integer", - "minimum": 30, - "maximum": 100000, - "description": "Rekey period in seconds.", - "title": "Rekey Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Session" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MKA" - }, - "sci": { - "type": "boolean", - "title": "SCI" - }, - "l2_protocols": { - "type": "object", - "properties": { - "ethernet_flow_control": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "encrypt", - "bypass" - ], - "title": "Mode" - } - }, - "required": [ - "mode" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Flow Control" - }, - "lldp": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "bypass", - "bypass unauthorized" - ], - "title": "Mode" - } - }, - "required": [ - "mode" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocols" - }, - "traffic_unprotected": { - "type": "object", - "properties": { - "action": { - "type": "string", - "description": "Allow/drop the transmit/receive of unprotected traffic.", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_active_sak": { - "type": "boolean", - "description": "Allow transmit/receive of encrypted traffic using operational SAK and block otherwise.", - "title": "Allow Active Sak" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Unprotected" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "maintenance": { - "type": "object", - "title": "Maintenance Mode", - "properties": { - "default_interface_profile": { - "type": "string", - "description": "Name of default Interface Profile.\n", - "title": "Default Interface Profile" - }, - "default_bgp_profile": { - "type": "string", - "description": "Name of default BGP Profile.\n", - "title": "Default BGP Profile" - }, - "default_unit_profile": { - "type": "string", - "description": "Name of default Unit Profile.\n", - "title": "Default Unit Profile" - }, - "interface_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "rate_monitoring": { - "type": "object", - "properties": { - "load_interval": { - "type": "integer", - "description": "Load Interval in Seconds.\n", - "title": "Load Interval" - }, - "threshold": { - "type": "integer", - "description": "Threshold in kbps.\n", - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rate Monitoring" - }, - "shutdown": { - "type": "object", - "properties": { - "max_delay": { - "type": "integer", - "description": "Max delay in seconds.\n", - "title": "Max Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Interface Profiles" - }, - "bgp_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "BGP Profile Name.", - "title": "Name" - }, - "initiator": { - "type": "object", - "properties": { - "route_map_inout": { - "type": "string", - "description": "Route Map.", - "title": "Route Map Inout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Initiator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "BGP Profiles" - }, - "unit_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unit Profile Name.", - "title": "Name" - }, - "on_boot": { - "type": "object", - "properties": { - "duration": { - "type": "integer", - "minimum": 300, - "maximum": 3600, - "description": "On-boot in seconds.\n", - "title": "Duration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "On Boot" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Unit Profiles" - }, - "units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unit Name.", - "title": "Name" - }, - "quiesce": { - "type": "boolean", - "title": "Quiesce" - }, - "profile": { - "type": "string", - "description": "Name of Unit Profile.\n", - "title": "Profile" - }, - "groups": { - "type": "object", - "properties": { - "bgp_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Name of BGP Group.\n" - }, - "title": "BGP Groups" - }, - "interface_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Name of Interface Group.\n" - }, - "title": "Interface Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Units" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "management_accounts": { - "type": "object", - "properties": { - "password": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Password" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Accounts" - }, - "management_api_gnmi": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "default": "eos-native", - "title": "Provider" - }, - "transport": { - "type": "object", - "properties": { - "grpc": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Transport name.", - "title": "Name" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "vrf": { - "type": "string", - "description": "VRF name is optional.", - "title": "VRF" - }, - "notification_timestamp": { - "type": "string", - "enum": [ - "send-time", - "last-change-time" - ], - "description": "Per the gNMI specification, the default timestamp field of a notification message is set to be\nthe time at which the value of the underlying data source changes or when the reported event takes place.\nIn order to facilitate integration in legacy environments oriented around polling style operations,\nan option to support overriding the timestamp field to the send-time is available from EOS 4.27.0F.\n", - "title": "Notification Timestamp" - }, - "ip_access_group": { - "type": "string", - "description": "ACL name.", - "title": "IP Access Group" - }, - "port": { - "type": "integer", - "description": "GNMI port.\nMake sure to update the control-plane ACL accordingly in order for the service to be reachable by external applications.\n", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Grpc" - }, - "grpc_tunnels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Transport name.", - "title": "Name" - }, - "shutdown": { - "type": "boolean", - "description": "Operational status of the gRPC tunnel.", - "title": "Shutdown" - }, - "tunnel_ssl_profile": { - "type": "string", - "description": "Tunnel SSL profile name.", - "title": "Tunnel SSL Profile" - }, - "gnmi_ssl_profile": { - "type": "string", - "description": "gNMI SSL profile name.", - "title": "gNMI SSL Profile" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "destination": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "IP address or hostname.", - "title": "Address" - }, - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - } - }, - "required": [ - "address", - "port" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - } - }, - "required": [ - "name", - "port" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "target": { - "type": "object", - "properties": { - "use_serial_number": { - "type": "boolean", - "description": "Use serial number as the Target ID.", - "title": "Use Serial Number" - }, - "target_ids": { - "type": "array", - "description": "Target IDs as a list.\n", - "items": { - "type": "string" - }, - "title": "Target IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Grpc Tunnels" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transport" - }, - "enable_vrfs": { - "type": "array", - "description": "These should not be mixed with the new keys above.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use transport.grpc instead.", - "deprecated": true, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "access_group": { - "type": "string", - "description": "Standard IPv4 ACL name.", - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Enable VRFs" - }, - "octa": { - "type": "object", - "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", - "deprecated": true, - "title": "Octa" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API gNMI" - }, - "management_api_http": { - "type": "object", - "properties": { - "enable_http": { - "type": "boolean", - "title": "Enable HTTP" - }, - "enable_https": { - "type": "boolean", - "title": "Enable Https" - }, - "https_ssl_profile": { - "description": "SSL Profile Name.", - "type": "string", - "title": "Https SSL Profile" - }, - "default_services": { - "type": "boolean", - "description": "Enable default services: capi-doc and tapagg.", - "title": "Default Services" - }, - "enable_vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "VRF Name.", - "type": "string", - "title": "Name" - }, - "access_group": { - "description": "Standard IPv4 ACL name.", - "type": "string", - "title": "Access Group" - }, - "ipv6_access_group": { - "description": "Standard IPv6 ACL name.", - "type": "string", - "title": "IPv6 Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Enable VRFs" - }, - "protocol_https_certificate": { - "type": "object", - "properties": { - "certificate": { - "type": "string", - "description": "Name of certificate; private key must also be specified.", - "title": "Certificate" - }, - "private_key": { - "type": "string", - "description": "Name of private key; certificate must also be specified.", - "title": "Private Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Protocol Https Certificate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API HTTP" - }, - "management_api_models": { - "type": "object", - "properties": { - "providers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "enum": [ - "sysdb", - "smash" - ], - "title": "Name" - }, - "paths": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "title": "Path" - }, - "disabled": { - "type": "boolean", - "default": false, - "title": "Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Providers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management API Models" - }, - "management_console": { - "type": "object", - "properties": { - "idle_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "title": "Idle Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Console" - }, - "management_cvx": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "server_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP or hostname." - }, - "title": "Server Hosts" - }, - "source_interface": { - "type": "string", - "description": "Interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management CVX" - }, - "management_defaults": { - "type": "object", - "properties": { - "secret": { - "type": "object", - "properties": { - "hash": { - "type": "string", - "enum": [ - "md5", - "sha512" - ], - "title": "Hash" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secret" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Defaults" - }, - "management_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Management Interface Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "type": { - "type": "string", - "enum": [ - "oob", - "inband" - ], - "default": "oob", - "description": "For documentation purposes only.", - "title": "Type" - }, - "gateway": { - "type": "string", - "description": "IPv4 address of default gateway in management VRF.", - "title": "Gateway" - }, - "ipv6_gateway": { - "type": "string", - "description": "IPv6 address of default gateway in management VRF.", - "title": "IPv6 Gateway" - }, - "mac_address": { - "type": "string", - "description": "MAC address.", - "title": "MAC Address" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the management interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Management Interfaces" - }, - "management_security": { - "type": "object", - "properties": { - "entropy_source": { - "type": "string", - "title": "Entropy Source" - }, - "entropy_sources": { - "type": "object", - "description": "Source of entropy.", - "properties": { - "hardware": { - "type": "boolean", - "description": "Use a hardware based source.", - "title": "Hardware" - }, - "haveged": { - "type": "boolean", - "description": "Use the HAVEGE algorithm.", - "title": "Haveged" - }, - "cpu_jitter": { - "type": "boolean", - "description": "Use the Jitter RNG algorithm of a CPU based source.", - "title": "CPU Jitter" - }, - "hardware_exclusive": { - "type": "boolean", - "description": "Only use entropy from the hardware source.", - "title": "Hardware Exclusive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Entropy Sources" - }, - "password": { - "type": "object", - "properties": { - "minimum_length": { - "type": "integer", - "minimum": 1, - "maximum": 32, - "title": "Minimum Length" - }, - "encryption_key_common": { - "type": "boolean", - "title": "Encryption Key Common" - }, - "encryption_reversible": { - "type": "string", - "title": "Encryption Reversible" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "minimum": { - "type": "object", - "properties": { - "digits": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Digits" - }, - "length": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Length" - }, - "lower": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Lower" - }, - "special": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Special" - }, - "upper": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Upper" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Minimum" - }, - "maximum": { - "type": "object", - "properties": { - "repetitive": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Repetitive" - }, - "sequential": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Sequential" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Password" - }, - "ssl_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "tls_versions": { - "type": "string", - "description": "List of allowed TLS versions as string.\nExamples:\n - \"1.0\"\n - \"1.0 1.1\"\n", - "title": "TLS Versions" - }, - "cipher_list": { - "type": "string", - "description": "cipher_list syntax follows the openssl cipher strings format.\nColon (:) separated list of allowed ciphers as a string.\n", - "title": "Cipher List" - }, - "trust_certificate": { - "type": "object", - "properties": { - "certificates": { - "type": "array", - "description": "List of trust certificate names.\nExamples:\n - test1.crt\n - test2.crt\n", - "items": { - "type": "string" - }, - "title": "Certificates" - }, - "requirement": { - "type": "object", - "properties": { - "basic_constraint_ca": { - "type": "boolean", - "title": "Basic Constraint Ca" - }, - "hostname_fqdn": { - "type": "boolean", - "description": "Enforce hostname to be FQDN without wildcard.\n", - "title": "Hostname Fqdn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Requirement" - }, - "policy_expiry_date_ignore": { - "type": "boolean", - "title": "Policy Expiry Date Ignore" - }, - "system": { - "type": "boolean", - "description": "Use system-supplied trust certificates.\n", - "title": "System" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trust Certificate" - }, - "chain_certificate": { - "type": "object", - "properties": { - "certificates": { - "type": "array", - "description": "List of chain certificate names.\nExamples:\n - chain1.crt\n - chain2.crt\n", - "items": { - "type": "string" - }, - "title": "Certificates" - }, - "requirement": { - "type": "object", - "properties": { - "basic_constraint_ca": { - "type": "boolean", - "title": "Basic Constraint Ca" - }, - "include_root_ca": { - "type": "boolean", - "title": "Include Root Ca" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Requirement" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Chain Certificate" - }, - "certificate": { - "type": "object", - "properties": { - "file": { - "type": "string", - "title": "File" - }, - "key": { - "type": "string", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Certificate" - }, - "certificate_revocation_lists": { - "type": "array", - "description": "List of CRLs (Certificate Revocation List).\nIf specified, one CRL needs to be provided for every certificate in the chain, even if the revocation list in the CRL is empty.\n", - "items": { - "type": "string" - }, - "title": "Certificate Revocation Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "SSL Profiles" - }, - "shared_secret_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "secrets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "secret": { - "type": "string", - "title": "Secret" - }, - "secret_type": { - "type": "string", - "default": "7", - "enum": [ - "0", - "7", - "8a" - ], - "title": "Secret Type" - }, - "receive_lifetime": { - "type": "object", - "properties": { - "infinite": { - "type": "boolean", - "title": "Infinite" - }, - "start_date_time": { - "type": "string", - "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "Start Date Time" - }, - "end_date_time": { - "type": "string", - "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "End Date Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Receive Lifetime" - }, - "transmit_lifetime": { - "type": "object", - "properties": { - "infinite": { - "type": "boolean", - "title": "Infinite" - }, - "start_date_time": { - "type": "string", - "description": "Start date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "Start Date Time" - }, - "end_date_time": { - "type": "string", - "description": "End date and time of lifetime of the secret. End date should be greater than start date.\nFormats supported:\n1. mm/dd/yyyy hh:mm:ss\n2. yyyy-mm-dd hh:mm:ss\ne.g 2024-12-20 10:00:00", - "title": "End Date Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transmit Lifetime" - }, - "local_time": { - "type": "boolean", - "description": "Configuring secret using the local timezone from system clock. Default is UTC.", - "title": "Local Time" - } - }, - "required": [ - "secret", - "receive_lifetime", - "transmit_lifetime", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Secrets" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "profile" - ] - }, - "title": "Shared Secret Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Security" - }, - "management_ssh": { - "type": "object", - "properties": { - "access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Standard ACL Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Access Groups" - }, - "ipv6_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Standard ACL Name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Access Groups" - }, - "idle_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 86400, - "description": "Idle timeout in minutes.", - "title": "Idle Timeout" - }, - "cipher": { - "description": "Cryptographic ciphers for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Cipher" - }, - "key_exchange": { - "description": "Cryptographic key exchange methods for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Key Exchange" - }, - "mac": { - "description": "Cryptographic MAC algorithms for SSH to use.", - "type": "array", - "items": { - "type": "string" - }, - "title": "MAC" - }, - "fips_restrictions": { - "type": "boolean", - "description": "Use FIPS compliant algorithms.", - "title": "Fips Restrictions" - }, - "hostkey": { - "type": "object", - "properties": { - "server": { - "description": "SSH host key settings.", - "type": "array", - "items": { - "type": "string" - }, - "title": "Server" - }, - "server_cert": { - "type": "string", - "description": "Configure switch's hostkey cert file.", - "title": "Server Cert" - }, - "client_strict_checking": { - "type": "boolean", - "description": "Enforce strict host key checking.", - "title": "Client Strict Checking" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hostkey" - }, - "enable": { - "description": "Enable SSH daemon.", - "type": "boolean", - "title": "Enable" - }, - "connection": { - "type": "object", - "properties": { - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Maximum total number of SSH sessions to device.", - "title": "Limit" - }, - "per_host": { - "type": "integer", - "minimum": 1, - "maximum": 20, - "description": "Maximum number of SSH sessions to device from a single host.", - "title": "Per Host" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connection" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "enable": { - "description": "Enable SSH in VRF.", - "type": "boolean", - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "log_level": { - "type": "string", - "description": "SSH daemon log level.", - "title": "Log Level" - }, - "client_alive": { - "type": "object", - "properties": { - "count_max": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "Number of keep-alive packets that can be sent without a response before the connection is assumed dead.", - "title": "Count Max" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "Time period (in seconds) to send SSH keep-alive packets.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client Alive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management SSH" - }, - "management_tech_support": { - "type": "object", - "properties": { - "policy_show_tech_support": { - "type": "object", - "properties": { - "exclude_commands": { - "type": "array", - "items": { - "type": "object", - "properties": { - "command": { - "type": "string", - "description": "Command to exclude from tech-support.", - "title": "Command" - }, - "type": { - "type": "string", - "enum": [ - "text", - "json" - ], - "default": "text", - "description": "The supported values for type are platform dependent.", - "title": "Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Exclude Commands" - }, - "include_commands": { - "type": "array", - "items": { - "type": "object", - "properties": { - "command": { - "type": "string", - "description": "Command to include in tech-support.", - "title": "Command" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Include Commands" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy Show Tech Support" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Management Tech Support" - }, - "match_list_input": { - "type": "object", - "title": "Match Lists", - "properties": { - "prefix_ipv4": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "minItems": 1, - "description": "List of IPv4 prefixes (with the subnet mask e.g. 192.0.2.0/24).", - "items": { - "type": "string" - }, - "title": "Prefixes" - } - }, - "required": [ - "prefixes", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix IPv4" - }, - "prefix_ipv6": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "minItems": 1, - "description": "List of IPv6 prefixes (with the subnet mask e.g. 2001:db8:abcd:0013::/64).", - "items": { - "type": "string" - }, - "title": "Prefixes" - } - }, - "required": [ - "prefixes", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix IPv6" - }, - "string": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Match-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "match_regex": { - "type": "string", - "description": "Regular Expression.", - "title": "Match Regex" - } - }, - "required": [ - "match_regex", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "String" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "mcs_client": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "cvx_secondary": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "server_hosts": { - "type": "array", - "items": { - "type": "string", - "description": "IP or hostname." - }, - "title": "Server Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CVX Secondary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MCS Client" - }, - "metadata": { - "type": "object", - "description": "The data under `metadata` is used for documentation, validation or integration purposes.\nIt will not affect the generated EOS configuration.", - "properties": { - "platform": { - "type": "string", - "title": "Platform" - }, - "system_mac_address": { - "type": "string", - "title": "System MAC Address" - }, - "cv_tags": { - "type": "object", - "properties": { - "device_tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Device Tags" - }, - "interface_tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "interface": { - "type": "string", - "title": "Interface" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tags" - } - }, - "required": [ - "interface" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Tags" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cv Tags" - }, - "cv_pathfinder": { - "type": "object", - "description": "Metadata used for CV Pathfinder visualization on CloudVision.", - "properties": { - "role": { - "type": "string", - "title": "Role" - }, - "region": { - "type": "string", - "title": "Region" - }, - "zone": { - "type": "string", - "title": "Zone" - }, - "site": { - "type": "string", - "title": "Site" - }, - "vtep_ip": { - "type": "string", - "title": "Vtep IP" - }, - "ssl_profile": { - "type": "string", - "title": "SSL Profile" - }, - "address": { - "type": "string", - "title": "Address" - }, - "pathfinders": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vtep_ip": { - "type": "string", - "title": "Vtep IP" - } - }, - "required": [ - "vtep_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathfinders" - }, - "interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "carrier": { - "type": "string", - "title": "Carrier" - }, - "circuit_id": { - "type": "string", - "title": "Circuit ID" - }, - "pathgroup": { - "type": "string", - "title": "Pathgroup" - }, - "public_ip": { - "type": "string", - "title": "Public IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interfaces" - }, - "pathgroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "carriers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Carriers" - }, - "imported_carriers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Imported Carriers" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathgroups" - }, - "regions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "zones": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "sites": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "location": { - "type": "object", - "properties": { - "address": { - "type": "string", - "title": "Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Location" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sites" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Zones" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Regions" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "avts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "constraints": { - "type": "object", - "properties": { - "jitter": { - "type": "integer", - "title": "Jitter" - }, - "latency": { - "type": "integer", - "title": "Latency" - }, - "lossrate": { - "type": "string", - "title": "Lossrate" - }, - "hop_count": { - "type": "string", - "title": "Hop Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Constraints" - }, - "description": { - "type": "string", - "title": "Description" - }, - "id": { - "type": "integer", - "title": "ID" - }, - "name": { - "type": "string", - "title": "Name" - }, - "pathgroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "preference": { - "type": "string", - "title": "Preference" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Pathgroups" - }, - "application_profiles": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Application Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Avts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VRFs" - }, - "internet_exit_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "title": "Type" - }, - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - }, - "upload_bandwidth": { - "type": "integer", - "title": "Upload Bandwidth" - }, - "download_bandwidth": { - "type": "integer", - "title": "Download Bandwidth" - }, - "firewall": { - "type": "boolean", - "title": "Firewall" - }, - "ips_control": { - "type": "boolean", - "title": "Ips Control" - }, - "acceptable_use_policy": { - "type": "boolean", - "title": "Acceptable Use Policy" - }, - "vpn_credentials": { - "type": "array", - "items": { - "type": "object", - "properties": { - "fqdn": { - "type": "string", - "title": "Fqdn" - }, - "vpn_type": { - "type": "string", - "title": "VPN Type" - }, - "pre_shared_key": { - "type": "string", - "title": "Pre Shared Key" - } - }, - "required": [ - "fqdn", - "vpn_type", - "pre_shared_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VPN Credentials" - }, - "tunnels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "preference": { - "type": "string", - "title": "Preference" - } - }, - "required": [ - "name", - "preference" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tunnels" - } - }, - "required": [ - "name", - "type", - "city", - "country", - "firewall", - "ips_control", - "acceptable_use_policy", - "vpn_credentials", - "tunnels" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Internet Exit Policies" - }, - "applications": { - "type": "object", - "properties": { - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "builtin_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Builtin Applications" - }, - "user_defined_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "User Defined Applications" - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "properties": { - "category": { - "type": "string", - "title": "Category" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Categories" - }, - "transport_protocols": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Transport Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Profiles" - }, - "categories": { - "type": "object", - "properties": { - "builtin_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "category": { - "type": "string", - "title": "Category" - }, - "services": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Services" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Builtin Applications" - }, - "user_defined_applications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "category": { - "type": "string", - "title": "Category" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "User Defined Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Categories" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Applications" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Cv Pathfinder" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Metadata" - }, - "mlag_configuration": { - "type": "object", - "title": "Multi-Chassis Link Aggregation (MLAG) Configuration", - "properties": { - "domain_id": { - "type": "string", - "title": "Domain ID" - }, - "heartbeat_interval": { - "type": "integer", - "description": "Heartbeat interval in milliseconds.", - "title": "Heartbeat Interval" - }, - "local_interface": { - "description": "Local Interface Name.", - "type": "string", - "title": "Local Interface" - }, - "peer_address": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "Peer Address" - }, - "peer_address_heartbeat": { - "type": "object", - "properties": { - "peer_ip": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "Peer IP" - }, - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Peer Address Heartbeat" - }, - "dual_primary_detection_delay": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Detection Delay" - }, - "dual_primary_recovery_delay_mlag": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Recovery Delay MLAG" - }, - "dual_primary_recovery_delay_non_mlag": { - "type": "integer", - "description": "Delay in seconds.", - "minimum": 0, - "maximum": 86400, - "title": "Dual Primary Recovery Delay Non MLAG" - }, - "peer_link": { - "description": "Port-Channel interface name.", - "type": "string", - "title": "Peer Link" - }, - "reload_delay_mlag": { - "type": "string", - "description": "Delay in seconds <0-86400> or 'infinity'.", - "title": "Reload Delay MLAG" - }, - "reload_delay_non_mlag": { - "type": "string", - "description": "Delay in seconds <0-86400> or 'infinity'.", - "title": "Reload Delay Non MLAG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "monitor_connectivity": { - "type": "object", - "properties": { - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "interval": { - "type": "integer", - "title": "Interval" - }, - "interface_sets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "interfaces": { - "type": "string", - "description": "Interface range(s) should be of same type, Ethernet, Loopback, Management etc.\nMultiple interface ranges can be specified separated by \",\".\n", - "title": "Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Sets" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Host Name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip": { - "type": "string", - "title": "IP" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "url": { - "type": "string", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "VRF Name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "interface_sets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "interfaces": { - "type": "string", - "title": "Interfaces" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Interface Sets" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "description": "Host name.", - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip": { - "type": "string", - "title": "IP" - }, - "local_interfaces": { - "type": "string", - "title": "Local Interfaces" - }, - "address_only": { - "type": "boolean", - "description": "PREVIEW: This key is in preview.\nWhen address-only is configured, the source IP of the packet is set to the interface\nIP but the packet may exit the device via a different interface.\nWhen set to `false`, the probe uses the interface to exit the device.\nNot supported yet in EOS.", - "default": true, - "title": "Address Only" - }, - "url": { - "type": "string", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Hosts" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Connectivity" - }, - "monitor_layer1": { - "type": "object", - "description": "Enable SYSLOG messages on transceiver SMBus communication failures.", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable monitor layer1.", - "title": "Enabled" - }, - "logging_mac_fault": { - "type": "boolean", - "description": "Enable MAC fault logging.", - "title": "Logging MAC Fault" - }, - "logging_transceiver": { - "type": "object", - "description": "Configure transceiver monitoring logging.", - "properties": { - "dom": { - "type": "boolean", - "description": "Enable transceiver Digital Optical Monitoring (DOM) logging.", - "title": "Dom" - }, - "communication": { - "type": "boolean", - "description": "Enable transceiver SMBus fail and reset logging.", - "title": "Communication" - }, - "enabled": { - "type": "boolean", - "description": "Some platforms support only the `logging transceiver` command. `enabled` key configures this command.", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging Transceiver" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Layer1" - }, - "monitor_sessions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Session Name.", - "title": "Name" - }, - "sources": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name, range or comma separated list.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "rx", - "tx", - "both" - ], - "title": "Direction" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL Name.", - "type": "string", - "title": "Name" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sources" - }, - "destinations": { - "type": "array", - "items": { - "type": "string", - "description": "'cpu' or interface name, range or comma separated list." - }, - "title": "Destinations" - }, - "encapsulation_gre_metadata_tx": { - "type": "boolean", - "title": "Encapsulation Gre Metadata TX" - }, - "header_remove_size": { - "type": "integer", - "description": "Number of bytes to remove from header.", - "title": "Header Remove Size" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL Name.", - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - }, - "rate_limit_per_ingress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Ingress Chip" - }, - "rate_limit_per_egress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Egress Chip" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "truncate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "size": { - "type": "integer", - "description": "Size in bytes.", - "title": "Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Truncate" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Monitor Sessions" - }, - "monitor_telemetry_influx": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "title": "VRF" - }, - "destinations": { - "type": "array", - "description": "Configure telemetry output destinations.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "InfluxDB connection name.", - "title": "Name" - }, - "database": { - "type": "string", - "description": "Set name of the database.", - "title": "Database" - }, - "data_retention_policy": { - "type": "string", - "title": "Data Retention Policy" - }, - "url": { - "type": "string", - "description": "It only accepts http(s), udp and unix domain destination URL.", - "pattern": "(http(s)?|udp|unix)://.+", - "title": "URL" - }, - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "title": "Password" - }, - "password_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Password Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Destinations" - }, - "source_group_standard_disabled": { - "type": "boolean", - "description": "Disable standard set of telemetry.", - "title": "Source Group Standard Disabled" - }, - "source_sockets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Label of the socket connection.", - "title": "Name" - }, - "connection_limit": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Connection Limit" - }, - "url": { - "type": "string", - "description": "It only accepts http(s), udp and unix domain socket URL.", - "pattern": "(http(s)?|udp|unix)://.+", - "title": "URL" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Source Sockets" - }, - "tags": { - "type": "array", - "description": "Extra tags added to the telemetry output.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Key of the global tag pair.", - "title": "Name" - }, - "value": { - "type": "string", - "description": "Value of the global tag pair.", - "title": "Value" - } - }, - "required": [ - "value", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Tags" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Telemetry Influx" - }, - "monitor_telemetry_postcard_policy": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "default": true, - "description": "Enable or disable the postcard telemetry feature.", - "title": "Disabled" - }, - "ingress": { - "type": "object", - "properties": { - "collection": { - "type": "object", - "description": "Collector configuration.", - "properties": { - "source": { - "type": "string", - "description": "Source IP address of GRE tunnel.", - "title": "Source" - }, - "destination": { - "type": "string", - "description": "Destination IP address of GRE tunnel.", - "title": "Destination" - }, - "version": { - "type": "integer", - "description": "Postcard version.", - "enum": [ - 1, - 2 - ], - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Collection" - }, - "sample": { - "type": "object", - "description": "Sampling parameters.", - "properties": { - "rate": { - "type": "integer", - "description": "Sampling rate. `rate` is preferred when both `rate` and `tcp_udp_checksum` are defined.", - "enum": [ - 16384, - 32768, - 65536 - ], - "title": "Rate" - }, - "tcp_udp_checksum": { - "type": "object", - "description": "TCP/UDP parameters.", - "properties": { - "value": { - "type": "integer", - "description": "TCP/UDP checksum or IP ID value.", - "minimum": 0, - "maximum": 65535, - "title": "Value" - }, - "mask": { - "type": "string", - "description": "16 bit hexadecimal mask for TCP/UDP or IP ID with atmost 2 unset bits.", - "title": "Mask" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP UDP Checksum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sample" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ingress" - }, - "marker_vxlan": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable vxlan marking using default bit 0.", - "title": "Enabled" - }, - "header_word_zero_bit": { - "type": "integer", - "minimum": 1, - "maximum": 31, - "title": "Header Word Zero Bit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Marker VxLAN" - }, - "profiles": { - "type": "array", - "description": "Postcard telemetry profiles.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile name.", - "title": "Name" - }, - "ingress_sample_policy": { - "type": "string", - "title": "Ingress Sample Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "sample_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "match_rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "type": { - "type": "string", - "description": "IP address version.", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Type" - }, - "destination_prefix": { - "type": "string", - "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", - "title": "Destination Prefix" - }, - "source_prefix": { - "type": "string", - "description": "IPv4 Network/Mask or IPv6 Network/Mask. Host part of prefix must be zero.\neg. 10.3.3.0/24", - "title": "Source Prefix" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "title": "Protocol" - }, - "source_ports": { - "type": "array", - "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\" ]\n [ \"www\" ]", - "items": { - "type": "string" - }, - "title": "Source Ports" - }, - "destination_ports": { - "type": "array", - "description": "A list of port numbers or port range or port name. Combination of port numbers or range and port name is not supported on EOS. The port numbers should be in range of 0-65535.\ne.g.\n [ \"12\", \"14-20\", \"80\" ]\n [ \"https\" ]", - "items": { - "type": "string" - }, - "title": "Destination Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "protocol" - ] - }, - "title": "Protocols" - } - }, - "required": [ - "type", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Match Rules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Sample Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor Telemetry Postcard Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface_disabled_default": { - "type": "boolean", - "title": "Interface Disabled Default" - }, - "router_id": { - "type": "string", - "title": "Router ID" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "transport_address_interface": { - "description": "Interface Name.", - "type": "string", - "title": "Transport Address Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - }, - "icmp": { - "description": "Enables the LSRs to generate ICMP reply messages and deliver them to the originating host.", - "type": "object", - "properties": { - "fragmentation_needed_tunneling": { - "type": "boolean", - "description": "Enables the MPLS tunneling of MTU exceeded ICMP replies (fragmentation needed, packet too big).", - "title": "Fragmentation Needed Tunneling" - }, - "ttl_exceeded_tunneling": { - "type": "boolean", - "description": "Enables the MPLS tunneling of TTL exceeded ICMP replies.", - "title": "TTL Exceeded Tunneling" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ICMP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "name_server": { - "type": "object", - "properties": { - "source": { - "type": "object", - "properties": { - "vrf": { - "description": "VRF Name.", - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "nodes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Nodes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Name Server" - }, - "ntp": { - "type": "object", - "properties": { - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Source interface.", - "title": "Name" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.", - "title": "Name" - }, - "burst": { - "type": "boolean", - "title": "Burst" - }, - "iburst": { - "type": "boolean", - "title": "Iburst" - }, - "key": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key" - }, - "local_interface": { - "type": "string", - "description": "Source interface.", - "title": "Local Interface" - }, - "maxpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of maxpoll between 3 - 17 (Logarithmic).", - "title": "Maxpoll" - }, - "minpoll": { - "type": "integer", - "minimum": 3, - "maximum": 17, - "description": "Value of minpoll between 3 - 17 (Logarithmic).", - "title": "Minpoll" - }, - "preferred": { - "type": "boolean", - "title": "Preferred" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 4, - "title": "Version" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Servers" - }, - "authenticate": { - "type": "boolean", - "title": "Authenticate" - }, - "authenticate_servers_only": { - "type": "boolean", - "title": "Authenticate Servers Only" - }, - "authentication_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65534, - "description": "Key identifier.", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Obfuscated key.", - "title": "Key" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "title": "Key Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Authentication Keys" - }, - "trusted_keys": { - "type": "string", - "description": "List of trusted-keys as string ex. 10-12,15.", - "title": "Trusted Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "NTP" - }, - "patch_panel": { - "type": "object", - "properties": { - "connector": { - "type": "object", - "properties": { - "interface": { - "type": "object", - "properties": { - "patch": { - "type": "object", - "properties": { - "bgp_vpws_remote_failure_errdisable": { - "type": "boolean", - "title": "BGP Vpws Remote Failure Errdisable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Patch" - }, - "recovery": { - "type": "object", - "properties": { - "review_delay": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "minimum": 10, - "maximum": 600, - "description": "Minimum delay.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 15, - "maximum": 900, - "description": "Maximum delay.", - "title": "Max" - } - }, - "required": [ - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Review Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Recovery" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connector" - }, - "patches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "connectors": { - "type": "array", - "minItems": 2, - "maxItems": 2, - "description": "Must have exactly two connectors to a patch of which at least one must be of type \"interface\".", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "type": { - "type": "string", - "enum": [ - "interface", - "pseudowire" - ], - "title": "Type" - }, - "endpoint": { - "type": "string", - "description": "String with relevant endpoint depending on type.\nExamples:\n- \"Ethernet1\"\n- \"Ethernet1 dot1q vlan 123\"\n- \"bgp vpws TENANT_A pseudowire VPWS_PW_1\"\n- \"ldp LDP_PW_1\"\n", - "title": "Endpoint" - } - }, - "required": [ - "type", - "endpoint", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Connectors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Patches" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Patch Panel" - }, - "peer_filters": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-filter Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "match": { - "type": "string", - "description": "Match as string.\nExample: \"as-range 1-100 result accept\"\n", - "title": "Match" - } - }, - "required": [ - "match", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Peer Filters" - }, - "platform": { - "type": "object", - "description": "Every key below this point is platform dependent.", - "properties": { - "trident": { - "type": "object", - "properties": { - "forwarding_table_partition": { - "type": "string", - "title": "Forwarding Table Partition" - }, - "mmu": { - "type": "object", - "description": "Memory Management Unit settings.\n", - "properties": { - "active_profile": { - "type": "string", - "description": "The queue profile to be applied to the platform.\n", - "title": "Active Profile" - }, - "queue_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "multicast_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "ID" - }, - "unit": { - "type": "string", - "enum": [ - "bytes", - "cells" - ], - "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", - "title": "Unit" - }, - "reserved": { - "type": "integer", - "description": "Amount of memory that should be reserved for this\nqueue.\n", - "title": "Reserved" - }, - "threshold": { - "type": "string", - "description": "Dynamic Shared Memory threshold.\n", - "title": "Threshold" - }, - "drop": { - "type": "object", - "properties": { - "precedence": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "title": "Precedence" - }, - "threshold": { - "type": "string", - "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", - "title": "Threshold" - } - }, - "required": [ - "precedence", - "threshold" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Multicast Queues" - }, - "unicast_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "ID" - }, - "unit": { - "type": "string", - "enum": [ - "bytes", - "cells" - ], - "description": "Unit to be used for the reservation value. If not specified, default is bytes.\n", - "title": "Unit" - }, - "reserved": { - "type": "integer", - "description": "Amount of memory that should be reserved for this\nqueue.\n", - "title": "Reserved" - }, - "threshold": { - "type": "string", - "description": "Dynamic Shared Memory threshold.\n", - "title": "Threshold" - }, - "drop": { - "type": "object", - "properties": { - "precedence": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "title": "Precedence" - }, - "threshold": { - "type": "string", - "description": "Drop Threshold. This value may also be fractions.\nExample: 7/8 or 3/4 or 1/2\n", - "title": "Threshold" - } - }, - "required": [ - "precedence", - "threshold" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Unicast Queues" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Queue Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mmu" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trident" - }, - "sand": { - "type": "object", - "description": "Most of the platform sand options are hardware dependent and optional.", - "properties": { - "qos_maps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Traffic Class" - }, - "to_network_qos": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "title": "To Network QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "QOS Maps" - }, - "lag": { - "type": "object", - "properties": { - "hardware_only": { - "type": "boolean", - "title": "Hardware Only" - }, - "mode": { - "type": "string", - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LAG" - }, - "forwarding_mode": { - "type": "string", - "title": "Forwarding Mode" - }, - "multicast_replication": { - "type": "object", - "properties": { - "default": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast Replication" - }, - "mdb_profile": { - "type": "string", - "description": "Sand platforms MDB Profile configuration. Note: l3-xxxl does not support MLAG.", - "enum": [ - "balanced", - "balanced-xl", - "l3", - "l3-xl", - "l3-xxl", - "l3-xxxl" - ], - "title": "MDB Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sand" - }, - "sfe": { - "type": "object", - "description": "Sfe (Software Forwarding Engine) settings.", - "properties": { - "data_plane_cpu_allocation_max": { - "type": "integer", - "description": "Maximum number of CPUs used for data plane traffic forwarding.", - "minimum": 1, - "maximum": 128, - "title": "Data Plane CPU Allocation Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sfe" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Platform" - }, - "poe": { - "type": "object", - "properties": { - "reboot": { - "type": "object", - "description": "Set the global PoE power behavior for PoE ports when the system is rebooted.", - "properties": { - "action": { - "type": "string", - "enum": [ - "power-off", - "maintain" - ], - "description": "PoE action for interface. By default in EOS, reboot action is set to power-off.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "interface_shutdown": { - "type": "object", - "description": "Set the global PoE power behavior for PoE ports when ports are admin down.", - "properties": { - "action": { - "type": "string", - "enum": [ - "power-off", - "maintain" - ], - "description": "PoE action for interface. By default in EOS, interface shutdown action is set to maintain.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "policy_maps": { - "type": "object", - "properties": { - "pbr": { - "type": "array", - "description": "PBR Policy-Maps.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy-Map Name.", - "title": "Name" - }, - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class Name.", - "title": "Name" - }, - "index": { - "type": "integer", - "title": "Index" - }, - "drop": { - "description": "'drop' and 'set' are mutually exclusive.", - "type": "boolean", - "title": "Drop" - }, - "set": { - "description": "Set Nexthop\n'drop' and 'set' are mutually exclusive.\n", - "type": "object", - "properties": { - "nexthop": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "description": "IPv4 or IPv6 Address.", - "title": "IP Address" - }, - "recursive": { - "type": "boolean", - "title": "Recursive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Nexthop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "PBR" - }, - "qos": { - "type": "array", - "description": "QOS Policy-Maps.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy-Map Name.", - "title": "Name" - }, - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Class Name.", - "title": "Name" - }, - "set": { - "type": "object", - "properties": { - "cos": { - "type": "integer", - "title": "COS" - }, - "dscp": { - "type": "string", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "title": "Traffic Class" - }, - "drop_precedence": { - "type": "integer", - "title": "Drop Precedence" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set" - }, - "police": { - "type": "object", - "properties": { - "rate": { - "type": "integer", - "description": "Specify rate.\nRange in kbps <8-200000000>.", - "title": "Rate" - }, - "rate_unit": { - "type": "string", - "enum": [ - "bps", - "kbps", - "mbps", - "pps" - ], - "default": "bps", - "title": "Rate Unit" - }, - "rate_burst_size": { - "type": "integer", - "description": "Range in bytes <256-128000000>.", - "title": "Rate Burst Size" - }, - "rate_burst_size_unit": { - "type": "string", - "enum": [ - "bytes", - "kbytes", - "mbytes", - "packets" - ], - "default": "bytes", - "title": "Rate Burst Size Unit" - }, - "action": { - "type": "object", - "properties": { - "type": { - "description": "Set action for policed traffic.", - "type": "string", - "enum": [ - "dscp", - "drop-precedence" - ], - "title": "Type" - }, - "dscp_value": { - "description": "Set when action.type is set to \"dscp\".", - "type": "string", - "title": "DSCP Value" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Action" - }, - "higher_rate": { - "type": "integer", - "description": "Specify higher rate.\nRange in kbps .", - "title": "Higher Rate" - }, - "higher_rate_unit": { - "type": "string", - "enum": [ - "bps", - "kbps", - "mbps", - "pps" - ], - "default": "bps", - "title": "Higher Rate Unit" - }, - "higher_rate_burst_size": { - "type": "integer", - "description": "Range in bytes <256-128000000>.", - "title": "Higher Rate Burst Size" - }, - "higher_rate_burst_size_unit": { - "type": "string", - "enum": [ - "bytes", - "kbytes", - "mbytes", - "packets" - ], - "default": "bytes", - "title": "Higher Rate Burst Size Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Police" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS" - }, - "copp_system_policy": { - "type": "object", - "description": "Control-plane policy configuration.", - "properties": { - "classes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "shape": { - "type": "integer", - "description": "Maximum rate limit.", - "minimum": 0, - "maximum": 10000000, - "title": "Shape" - }, - "bandwidth": { - "type": "integer", - "description": "Minimum bandwidth.", - "minimum": 0, - "maximum": 10000000, - "title": "Bandwidth" - }, - "rate_unit": { - "type": "string", - "description": "The `rate_unit` must be defined for `shape` and `bandwidth`.", - "enum": [ - "pps", - "kbps" - ], - "title": "Rate Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Classes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Copp System Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Policy Maps" - }, - "port_channel_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulation are all optional, and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "native_vlan": { - "type": "integer", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "mlag": { - "type": "integer", - "description": "MLAG ID.", - "minimum": 1, - "maximum": 2000, - "title": "MLAG" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "lacp_fallback_timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "default": 90, - "minimum": 0, - "maximum": 300, - "title": "LACP Fallback Timeout" - }, - "lacp_fallback_mode": { - "type": "string", - "enum": [ - "individual", - "static" - ], - "title": "LACP Fallback Mode" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "neighbor": { - "type": "string", - "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", - "title": "Neighbor" - }, - "per_link": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rfc_7130": { - "type": "boolean", - "title": "Rfc 7130" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Per Link" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "default": false, - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "esi": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", - "deprecated": true, - "title": "Esi" - }, - "rt": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", - "deprecated": true, - "title": "Rt" - }, - "lacp_id": { - "type": "string", - "description": "LACP ID with format xxxx.xxxx.xxxx.", - "title": "LACP ID" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - }, - "mpass": { - "type": "boolean", - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "Mpass" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 address/mask.", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Port Channel Interfaces" - }, - "prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Prefix-list Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"permit 10.255.0.0/27 eq 32\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Prefix Lists" - }, - "priority_flow_control": { - "type": "object", - "description": "Global Priority Flow Control settings.\n", - "properties": { - "all_off": { - "type": "boolean", - "description": "Disable PFC on all interfaces.\n", - "title": "All Off" - }, - "watchdog": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "drop", - "no-drop" - ], - "description": "Action on stuck queue.\n", - "title": "Action" - }, - "timeout": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Timeout" - }, - "polling_interval": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,3})?$", - "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point.\nExample: 0.005 or 60\n", - "title": "Polling Interval" - }, - "recovery_time": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Recovery Time" - }, - "override_action_drop": { - "type": "boolean", - "description": "Override configured action on stuck queue to drop.\n", - "title": "Override Action Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Watchdog" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "prompt": { - "type": "string", - "title": "Prompt" - }, - "ptp": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "boundary", - "disabled", - "e2etransparent", - "gptp", - "ordinarymaster", - "p2ptransparent" - ], - "title": "Mode" - }, - "profile": { - "type": "string", - "enum": [ - "g8275.1", - "g8275.2" - ], - "title": "Profile" - }, - "mode_one_step": { - "type": "boolean", - "title": "Mode One Step" - }, - "forward_unicast": { - "type": "boolean", - "title": "Forward Unicast" - }, - "clock_identity": { - "type": "string", - "description": "The clock-id in xx:xx:xx:xx:xx:xx format.", - "title": "Clock Identity" - }, - "source": { - "type": "object", - "properties": { - "ip": { - "description": "Source IP.", - "type": "string", - "title": "IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "priority1": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority1" - }, - "priority2": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority2" - }, - "ttl": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "TTL" - }, - "domain": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Domain" - }, - "message_type": { - "type": "object", - "properties": { - "general": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "General" - }, - "event": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Message Type" - }, - "monitor": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "threshold": { - "type": "object", - "properties": { - "offset_from_master": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Offset From Master" - }, - "mean_path_delay": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Mean Path Delay" - }, - "drop": { - "type": "object", - "properties": { - "offset_from_master": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Offset From Master" - }, - "mean_path_delay": { - "type": "integer", - "minimum": 0, - "maximum": 1000000000, - "title": "Mean Path Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - }, - "missing_message": { - "type": "object", - "properties": { - "intervals": { - "type": "object", - "properties": { - "announce": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Announce" - }, - "follow_up": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Follow Up" - }, - "sync": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Intervals" - }, - "sequence_ids": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "announce": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Announce" - }, - "delay_resp": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Delay Resp" - }, - "follow_up": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Follow Up" - }, - "sync": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sequence IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Message" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Monitor" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "qos": { - "type": "object", - "properties": { - "map": { - "type": "object", - "properties": { - "cos": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"0 1 to traffic-class 1\"\n" - }, - "title": "COS" - }, - "dscp": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"8 9 10 to traffic-class 1\"\n" - }, - "title": "DSCP" - }, - "exp": { - "type": "array", - "items": { - "type": "string", - "description": "Example \"0 to traffic-class 0\"\n" - }, - "title": "EXP" - }, - "traffic_class": { - "type": "array", - "items": { - "type": "string", - "description": "Example: \"1 to dscp 32\"\n" - }, - "title": "Traffic Class" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Map" - }, - "rewrite_dscp": { - "type": "boolean", - "title": "Rewrite DSCP" - }, - "random_detect": { - "type": "object", - "description": "Global random-detect settings.", - "properties": { - "ecn": { - "type": "object", - "description": "Global ECN Configuration.", - "properties": { - "allow_non_ect": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Allow non-ect and set drop-precedence 1 in a policy map simultaneously.\nCheck which command is required for your platform.", - "title": "Enabled" - }, - "chip_based": { - "type": "boolean", - "description": "Allow non-ect chip-based.", - "title": "Chip Based" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allow Non Ect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "qos_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Profile-Name.", - "title": "Name" - }, - "trust": { - "type": "string", - "enum": [ - "cos", - "dscp", - "disabled" - ], - "title": "Trust" - }, - "cos": { - "type": "integer", - "title": "COS" - }, - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "service_policy": { - "type": "object", - "properties": { - "type": { - "type": "object", - "properties": { - "qos_input": { - "type": "string", - "description": "Policy-map name.", - "title": "QOS Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.", - "title": "Comment" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Units to be used for the threshold values.\nThis should be one of segments, byte, kbytes, mbytes.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Random-detect ECN maximum mark probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - }, - "drop": { - "description": "Set WRED parameters.", - "type": "object", - "properties": { - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "microseconds", - "milliseconds" - ], - "description": "Units to be used for the threshold values.", - "title": "Units" - }, - "drop_precedence": { - "type": "integer", - "minimum": 0, - "maximum": 2, - "description": "Specify Drop Precedence value.", - "title": "Drop Precedence" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "WRED minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "WRED maximum-threshold.", - "title": "Max" - }, - "drop_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "WRED drop probability.", - "title": "Drop Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "WRED weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max", - "drop_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "TX Queues" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "UC TX queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.", - "title": "Comment" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Unit to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "Random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Random-detect ECN maximum mark probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - }, - "drop": { - "description": "Set WRED parameters.", - "type": "object", - "properties": { - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "microseconds", - "milliseconds" - ], - "description": "Units to be used for the threshold values.", - "title": "Units" - }, - "drop_precedence": { - "type": "integer", - "minimum": 0, - "maximum": 2, - "description": "Specify Drop Precedence value.", - "title": "Drop Precedence" - }, - "min": { - "type": "integer", - "minimum": 1, - "description": "WRED minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "description": "WRED maximum-threshold.", - "title": "Max" - }, - "drop_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "WRED drop probability.", - "title": "Drop Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "WRED weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max", - "drop_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Uc TX Queues" - }, - "mc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "MC TX queue ID.", - "title": "ID" - }, - "bandwidth_percent": { - "type": "integer", - "title": "Bandwidth Percent" - }, - "bandwidth_guaranteed_percent": { - "type": "integer", - "title": "Bandwidth Guaranteed Percent" - }, - "priority": { - "type": "string", - "enum": [ - "priority strict", - "no priority" - ], - "title": "Priority" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Supported options are platform dependent.\nExample: \"< rate > kbps\", \"1-100 percent\", \"< rate > pps\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "comment": { - "type": "string", - "description": "Text comment added to queue.\n", - "title": "Comment" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Mc TX Queues" - }, - "priority_flow_control": { - "type": "object", - "description": "Priority Flow Control settings.\n", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable Priority Flow control.\n", - "title": "Enabled" - }, - "watchdog": { - "type": "object", - "description": "Watchdog can detect stuck transmit queues.\n", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable the watchdog on stuck transmit queues.\n", - "title": "Enabled" - }, - "action": { - "type": "string", - "enum": [ - "drop", - "notify-only" - ], - "description": "Override the default error-disable action to either drop\ntraffic on the stuck queue or notify-only\nwithout making any actions on the stuck queue.\n", - "title": "Action" - }, - "timer": { - "type": "object", - "description": "Timer thresholds whilst monitoring queues.\n", - "properties": { - "timeout": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Timeout in seconds after which port should be errdisabled or\nshould start dropping on congested priorities.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Timeout" - }, - "polling_interval": { - "type": "string", - "pattern": "^auto|\\d+(\\.\\d{1,3})?$", - "description": "Time interval in seconds at which the watchdog should poll the queues.\nThis should be decimal with up to 3 decimal point or set\nto 'auto' based on recovery_time and timeout values.\nExample: 0.005 or 60\n", - "title": "Polling Interval" - }, - "recovery_time": { - "type": "string", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "description": "Recovery-time in seconds after which stuck queue should\nrecover and start forwarding again.\nThis should be decimal with up to 2 decimal point.\nExample: 0.01 or 60\n", - "title": "Recovery Time" - }, - "forced": { - "type": "boolean", - "description": "Force recover any stuck queue(s) after the duration,\nirrespective of whether PFC frames are being\nreceived or not.\n", - "title": "Forced" - } - }, - "required": [ - "timeout", - "polling_interval", - "recovery_time" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timer" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Watchdog" - }, - "priorities": { - "type": "array", - "description": "Set the drop/no_drop on each queue.\n", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Priority queue number (COS value).\n", - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "description": "Enable Priority Flow Control frames on this queue.\n", - "title": "No Drop" - } - }, - "required": [ - "priority", - "no_drop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "QOS Profiles" - }, - "queue_monitor_length": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default_thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "description": "Default high threshold for Ethernet Interfaces.\n", - "title": "High" - }, - "low": { - "type": "integer", - "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Thresholds" - }, - "log": { - "type": "integer", - "description": "Logging interval in seconds.", - "title": "Log" - }, - "notifying": { - "type": "boolean", - "description": "Should only be used for platforms supporting the \"queue-monitor length notifying\" CLI.", - "title": "Notifying" - }, - "cpu": { - "type": "object", - "properties": { - "thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "title": "High" - }, - "low": { - "type": "integer", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Thresholds" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CPU" - }, - "tx_latency": { - "type": "boolean", - "description": "Enable tx-latency mode.", - "title": "TX Latency" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Queue Monitor Length" - }, - "queue_monitor_streaming": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "ip_access_group": { - "type": "string", - "description": "Name of IP ACL.", - "title": "IP Access Group" - }, - "ipv6_access_group": { - "type": "string", - "description": "Name of IPv6 ACL.", - "title": "IPv6 Access Group" - }, - "max_connections": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "title": "Max Connections" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Queue Monitor Streaming" - }, - "radius_server": { - "type": "object", - "properties": { - "attribute_32_include_in_access_req": { - "type": "object", - "properties": { - "hostname": { - "type": "boolean", - "title": "Hostname" - }, - "format": { - "type": "string", - "description": "Specify the format of the NAS-Identifier. If 'hostname' is set, this is ignored.", - "title": "Format" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Attribute 32 Include In Access Req" - }, - "dynamic_authorization": { - "type": "object", - "properties": { - "port": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "TCP Port.", - "title": "Port" - }, - "tls_ssl_profile": { - "type": "string", - "description": "Name of TLS profile.", - "title": "TLS SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic Authorization" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "tls": { - "type": "object", - "description": "When TLS is configured, `key` is ignored..", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable TLS for radius-server.", - "title": "Enabled" - }, - "ssl_profile": { - "type": "string", - "description": "Name of TLS profile.", - "title": "SSL Profile" - }, - "port": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "TCP Port used for TLS. EOS default is 2083.", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TLS" - }, - "timeout": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - }, - "retransmit": { - "type": "integer", - "minimum": 0, - "maximum": 100, - "title": "Retransmit" - }, - "key": { - "type": "string", - "description": "Encrypted key - only type 7 supported.\nWhen TLS is configured, `key` is ignored.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "host" - ] - }, - "title": "Hosts" - }, - "tls_ssl_profile": { - "type": "string", - "description": "Name of global TLS profile.", - "title": "TLS SSL Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Radius Server" - }, - "radius_servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "key": { - "type": "string", - "description": "Encrypted key.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Radius Servers" - }, - "redundancy": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "description": "Redundancy Protocol.", - "title": "Protocol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redundancy" - }, - "roles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Role name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence number.", - "title": "Sequence" - }, - "action": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Action" - }, - "mode": { - "type": "string", - "description": "\"config\", \"config-all\", \"exec\" or mode key as string.\n", - "title": "Mode" - }, - "command": { - "type": "string", - "description": "Command as string.", - "title": "Command" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Roles" - }, - "route_maps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Route-map Name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "type": { - "type": "string", - "enum": [ - "permit", - "deny" - ], - "title": "Type" - }, - "description": { - "type": "string", - "title": "Description" - }, - "match": { - "type": "array", - "description": "List of \"match\" statements.", - "items": { - "type": "string", - "description": "Match as string.\nExample: \"ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY\"\n" - }, - "title": "Match" - }, - "set": { - "type": "array", - "description": "List of \"set\" statements.", - "items": { - "type": "string", - "description": "Set as string.\nExample: \"origin incomplete\"\n" - }, - "title": "Set" - }, - "sub_route_map": { - "type": "string", - "description": "Name of Sub-Route-map.", - "title": "Sub Route Map" - }, - "continue": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "sequence_number": { - "type": "integer", - "title": "Sequence Number" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Continue" - } - }, - "required": [ - "type", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Route Maps" - }, - "router_adaptive_virtual_topology": { - "type": "object", - "properties": { - "topology_role": { - "description": "Role name.", - "type": "string", - "enum": [ - "edge", - "pathfinder", - "transit region", - "transit zone" - ], - "title": "Topology Role" - }, - "region": { - "type": "object", - "description": "Region name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Region" - }, - "zone": { - "type": "object", - "description": "Zone name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 10000, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Zone" - }, - "site": { - "type": "object", - "description": "Site name and ID.", - "properties": { - "name": { - "type": "string", - "pattern": "^[A-Za-z0-9_.:{}\\[\\]-]+$", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 1, - "maximum": 10000, - "title": "ID" - } - }, - "required": [ - "name", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Site" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "AVT Name.", - "title": "Name" - }, - "load_balance_policy": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance Policy" - }, - "internet_exit_policy": { - "type": "string", - "description": "Name of the internet exit policy.", - "title": "Internet Exit Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - }, - "policies": { - "type": "array", - "description": "A sequence of application profiles mapped to some virtual topologies.\n\nWhen `wan_mode` is set to `autovpn`, the rules are indexed using 10* in the list.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "matches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "application_profile": { - "type": "string", - "description": "Application profile name.", - "title": "Application Profile" - }, - "avt_profile": { - "type": "string", - "description": "AVT Profile name.", - "title": "Avt Profile" - }, - "dscp": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "description": "Set DSCP for matched traffic.", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Set traffic-class for matched traffic.", - "title": "Traffic Class" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Matches" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "policy": { - "type": "string", - "description": "AVT Policy name.", - "title": "Policy" - }, - "profiles": { - "type": "array", - "description": "AVT profiles in this VRF.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "AVT profile name.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Unique ID for this AVT (per VRF).", - "minimum": 1, - "maximum": 254, - "title": "ID" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Adaptive Virtual Topology" - }, - "router_bfd": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "local_address": { - "type": "string", - "description": "Configure BFD local IP/IPv6 address.", - "title": "Local Address" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "multihop": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multihop" - }, - "session_snapshot_interval": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Interval in seconds.\nIntervals below 10 are considered \"dangerous\" on EOS and must have `session_snapshot_interval_dangerous` set to `true`.", - "title": "Session Snapshot Interval" - }, - "session_snapshot_interval_dangerous": { - "type": "boolean", - "title": "Session Snapshot Interval Dangerous" - }, - "sbfd": { - "type": "object", - "properties": { - "local_interface": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface Name.", - "title": "Name" - }, - "protocols": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Protocols" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Interface" - }, - "initiator_interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Initiator Interval" - }, - "initiator_multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Initiator Multiplier" - }, - "initiator_measurement_round_trip": { - "type": "boolean", - "description": "Enable round-trip delay measurement.", - "title": "Initiator Measurement Round Trip" - }, - "reflector": { - "type": "object", - "properties": { - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "local_discriminator": { - "type": "string", - "description": "IPv4 address or 32 bit integer.", - "title": "Local Discriminator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reflector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SBFD" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router BFD" - }, - "router_bgp": { - "type": "object", - "properties": { - "as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "As" - }, - "as_notation": { - "title": "ASN Notation", - "type": "string", - "description": "BGP AS can be deplayed in the asplain <1-4294967295> or asdot notation \"<1-65535>.<0-65535>\". This flag indicates which mode is preferred - asplain is the default.", - "enum": [ - "asdot", - "asplain" - ] - }, - "router_id": { - "type": "string", - "description": "In IP address format A.B.C.D.", - "title": "Router ID" - }, - "distance": { - "type": "object", - "properties": { - "external_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "External Routes" - }, - "internal_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Internal Routes" - }, - "local_routes": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Local Routes" - } - }, - "required": [ - "external_routes", - "internal_routes", - "local_routes" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distance" - }, - "graceful_restart": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_time": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Number of seconds.", - "title": "Restart Time" - }, - "stalepath_time": { - "type": "integer", - "minimum": 1, - "maximum": 3600, - "description": "Number of seconds.", - "title": "Stalepath Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart" - }, - "graceful_restart_helper": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_time": { - "type": "integer", - "minimum": 1, - "maximum": 100000000, - "description": "Number of seconds\ngraceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", - "title": "Restart Time" - }, - "long_lived": { - "type": "boolean", - "description": "graceful-restart-help long-lived and restart-time are mutually exclusive in CLI.\nrestart-time will take precedence if both are configured.\n", - "title": "Long Lived" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart Helper" - }, - "maximum_paths": { - "type": "object", - "properties": { - "paths": { - "type": "integer", - "minimum": 1, - "maximum": 600, - "title": "Paths" - }, - "ecmp": { - "type": "integer", - "minimum": 1, - "maximum": 600, - "title": "ECMP" - } - }, - "required": [ - "paths" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Maximum Paths" - }, - "updates": { - "type": "object", - "properties": { - "wait_for_convergence": { - "type": "boolean", - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", - "title": "Wait For Convergence" - }, - "wait_install": { - "type": "boolean", - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", - "title": "Wait Install" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Updates" - }, - "bgp_cluster_id": { - "type": "string", - "description": "IP Address A.B.C.D.", - "title": "BGP Cluster ID" - }, - "bgp_defaults": { - "type": "array", - "description": "BGP command as string.", - "items": { - "type": "string" - }, - "title": "BGP Defaults" - }, - "bgp": { - "type": "object", - "properties": { - "default": { - "type": "object", - "properties": { - "ipv4_unicast": { - "type": "boolean", - "description": "Default activation of IPv4 unicast address-family on all IPv4 neighbors (EOS default = True).", - "title": "IPv4 Unicast" - }, - "ipv4_unicast_transport_ipv6": { - "type": "boolean", - "description": "Default activation of IPv4 unicast address-family on all IPv6 neighbors (EOS default == False).", - "title": "IPv4 Unicast Transport IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default" - }, - "route_reflector_preserve_attributes": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Reflector Preserve Attributes" - }, - "bestpath": { - "type": "object", - "properties": { - "d_path": { - "type": "boolean", - "title": "D Path" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Bestpath" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "listen_ranges": { - "type": "array", - "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "peer_id_include_router_id": { - "type": "boolean", - "description": "Include router ID as part of peer filter.", - "title": "Peer ID Include Router ID" - }, - "peer_group": { - "type": "string", - "description": "Peer group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `peer_filter` or `remote_as` is required but mutually exclusive.\nIf both are defined, `peer_filter` takes precedence\n", - "title": "Peer Filter" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Listen Ranges" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "Peer Filter" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "update_source": { - "type": "string", - "description": "IP address or interface name.", - "title": "Update Source" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "description": "Number of local ASNs allowed in a BGP update.", - "minimum": 1, - "maximum": 10, - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "bgp_listen_range_prefix": { - "type": "string", - "description": "IP prefix range.\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.", - "deprecated": true, - "title": "BGP Listen Range Prefix" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "peer_group": { - "type": "string", - "title": "Peer Group" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "description": { - "type": "string", - "title": "Description" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "update_source": { - "type": "string", - "description": "Source Interface.", - "title": "Update Source" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "description": "Maximum number of routes (0 means unlimited).", - "minimum": 0, - "maximum": 4294967294, - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "missing_policy": { - "type": "object", - "description": "Missing policy configuration for all address-families.", - "properties": { - "direction_in": { - "description": "Missing policy inbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction In" - }, - "direction_out": { - "description": "Missing policy outbound direction.", - "type": "object", - "properties": { - "action": { - "description": "Missing policy action.", - "type": "string", - "enum": [ - "deny", - "permit", - "deny-in-out" - ], - "title": "Action" - }, - "include_community_list": { - "type": "boolean", - "description": "Include community-list references in missing policy decision.", - "title": "Include Community List" - }, - "include_prefix_list": { - "type": "boolean", - "description": "Include prefix-list references in missing policy decision.", - "title": "Include Prefix List" - }, - "include_sub_route_map": { - "type": "boolean", - "description": "Include sub-route-map references in missing policy decision.", - "title": "Include Sub Route Map" - } - }, - "required": [ - "action" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Direction Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "description": "Number of local ASNs allowed in a BGP update.", - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "link_bandwidth": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "default": { - "type": "string", - "description": "nn.nn(K|M|G) link speed in bits/second.", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Bandwidth" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "session_tracker": { - "type": "string", - "title": "Session Tracker" - }, - "shared_secret": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Name of profile defined under `management_security`.", - "title": "Profile" - }, - "hash_algorithm": { - "type": "string", - "description": "Note: Algorithm hmac-sha-256 requires EOS version 4.31.1F and above.", - "enum": [ - "aes-128-cmac-96", - "hmac-sha-256", - "hmac-sha1-96" - ], - "title": "Hash Algorithm" - } - }, - "required": [ - "profile", - "hash_algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "ttl_maximum_hops": { - "type": "integer", - "minimum": 0, - "maximum": 254, - "description": "Maximum number of hops.", - "title": "TTL Maximum Hops" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_group": { - "type": "string", - "default": "Peer-group name", - "title": "Peer Group" - }, - "description": { - "type": "string", - "title": "Description" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.", - "title": "Peer Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Neighbor Interfaces" - }, - "aggregate_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "advertise_only": { - "type": "boolean", - "title": "Advertise Only" - }, - "as_set": { - "type": "boolean", - "title": "As Set" - }, - "summary_only": { - "type": "boolean", - "title": "Summary Only" - }, - "attribute_map": { - "type": "string", - "description": "Route-map name.", - "title": "Attribute Map" - }, - "match_map": { - "type": "string", - "description": "Route-map name.", - "title": "Match Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Aggregate Addresses" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - }, - "vlan_aware_bundles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VLAN aware bundle name.", - "title": "Name" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "description": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Description" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - }, - "vlan": { - "type": "string", - "description": "VLAN range as string. Example \"100-200,300\".", - "title": "VLAN" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN-aware-bundle definition in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VLAN Aware Bundles" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", - "title": "EOS CLI" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vpws": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VPWS instance name.", - "title": "Name" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "route_targets": { - "type": "object", - "properties": { - "import_export": { - "type": "string", - "description": "Route Target.", - "title": "Import Export" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "mpls_control_word": { - "type": "boolean", - "title": "MPLS Control Word" - }, - "label_flow": { - "type": "boolean", - "title": "Label Flow" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "pseudowires": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Pseudowire name.", - "title": "Name" - }, - "id_local": { - "type": "integer", - "description": "Must match id_remote on other pe.", - "title": "ID Local" - }, - "id_remote": { - "type": "integer", - "description": "Must match id_local on other pe.", - "title": "ID Remote" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Pseudowires" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Vpws" - }, - "address_family_evpn": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "neighbor_default": { - "type": "object", - "properties": { - "encapsulation": { - "type": "string", - "enum": [ - "vxlan", - "mpls" - ], - "title": "Encapsulation" - }, - "next_hop_self_source_interface": { - "description": "Source interface name.", - "type": "string", - "title": "Next Hop Self Source Interface" - }, - "next_hop_self_received_evpn_routes": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "inter_domain": { - "type": "boolean", - "title": "Inter Domain" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop Self Received EVPN Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default" - }, - "next_hop_mpls_resolution_ribs": { - "type": "array", - "minItems": 1, - "maxItems": 3, - "description": "Specify the RIBs used to resolve MPLS next-hops. The order of this list determines the order of RIB lookups.", - "items": { - "type": "object", - "properties": { - "rib_type": { - "type": "string", - "enum": [ - "system-connected", - "tunnel-rib-colored", - "tunnel-rib" - ], - "description": "Type of RIB. For 'tunnel-rib', use 'rib_name' to specify the name of the Tunnel-RIB to use.", - "title": "Rib Type" - }, - "rib_name": { - "type": "string", - "description": "The name of the tunnel-rib to use when using 'tunnel-rib' type.", - "title": "Rib Name" - } - }, - "required": [ - "rib_type" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Next Hop MPLS Resolution Ribs" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - }, - "domain_remote": { - "type": "boolean", - "title": "Domain Remote" - }, - "encapsulation": { - "type": "string", - "enum": [ - "vxlan", - "mpls" - ], - "title": "Encapsulation" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "evpn_hostflap_detection": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "window": { - "type": "integer", - "description": "Time (in seconds) to detect a MAC duplication issue.", - "minimum": 0, - "maximum": 4294967295, - "title": "Window" - }, - "threshold": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "Minimum number of MAC moves that indicate a MAC Duplication issue.", - "title": "Threshold" - }, - "expiry_timeout": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "description": "Time (in seconds) to purge a MAC duplication issue.", - "title": "Expiry Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Hostflap Detection" - }, - "next_hop": { - "type": "object", - "properties": { - "resolution_disabled": { - "type": "boolean", - "title": "Resolution Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - }, - "import_ethernet_segment_ip_mass_withdraw": { - "type": "boolean", - "title": "Import Ethernet Segment IP Mass Withdraw" - }, - "import_overlay_index_gateway": { - "type": "boolean", - "title": "Import Overlay Index Gateway" - }, - "export_ethernet_segment_ip_mass_withdraw": { - "type": "boolean", - "title": "Export Ethernet Segment IP Mass Withdraw" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "next_hop_unchanged": { - "type": "boolean", - "title": "Next Hop Unchanged" - }, - "bgp_additional_paths": { - "type": "object", - "description": "BGP additional-paths commands.", - "properties": { - "receive": { - "type": "boolean", - "description": "Receive multiple paths.", - "title": "Receive" - }, - "send": { - "type": "object", - "description": "Send multiple paths.", - "properties": { - "any": { - "type": "boolean", - "description": "Any eligible path.", - "title": "Any" - }, - "backup": { - "type": "boolean", - "description": "Best path and installed backup path.", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "description": "All paths in best path ECMP group.", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP Additional Paths" - }, - "layer_2_fec_in_place_update": { - "type": "object", - "description": "BGP layer-2 in-place FEC operation.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "description": "In-place FEC update tracking timeout in seconds.", - "minimum": 0, - "maximum": 300, - "title": "Timeout" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Layer 2 Fec In Place Update" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family EVPN" - }, - "address_family_rtc": { - "type": "object", - "properties": { - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "default_route_target": { - "type": "object", - "properties": { - "only": { - "type": "boolean", - "title": "Only" - }, - "encoding_origin_as_omit": { - "type": "string", - "title": "Encoding Origin As Omit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Rtc" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "type": "string", - "title": "Prefix" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "originate": { - "type": "boolean", - "title": "Originate" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv6_originate": { - "type": "boolean", - "title": "Address Family IPv6 Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Prefix-list name.", - "title": "Prefix List Out" - }, - "default_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv4_multicast": { - "type": "object", - "properties": { - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Multicast" - }, - "address_family_ipv4_sr_te": { - "type": "object", - "properties": { - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Sr Te" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "type": "string", - "title": "Prefix" - }, - "route_map": { - "description": "Route-map name.", - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly used if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv6_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Multicast" - }, - "address_family_ipv6_sr_te": { - "type": "object", - "properties": { - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Sr Te" - }, - "address_family_link_state": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "path_selection": { - "type": "object", - "properties": { - "roles": { - "type": "object", - "properties": { - "producer": { - "type": "boolean", - "title": "Producer" - }, - "consumer": { - "type": "boolean", - "title": "Consumer" - }, - "propagator": { - "type": "boolean", - "title": "Propagator" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Roles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Path Selection" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Link State" - }, - "address_family_flow_spec_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv4" - }, - "address_family_flow_spec_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv6" - }, - "address_family_path_selection": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Path Selection" - }, - "address_family_vpn_ipv4": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_default_encapsulation_mpls_next_hop_self": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default Encapsulation MPLS Next Hop Self" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family VPN IPv4" - }, - "address_family_vpn_ipv6": { - "type": "object", - "properties": { - "domain_identifier": { - "type": "string", - "title": "Domain Identifier" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "route": { - "type": "object", - "properties": { - "import_match_failure_action": { - "type": "string", - "enum": [ - "discard" - ], - "title": "Import Match Failure Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "default_route": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Route" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_default_encapsulation_mpls_next_hop_self": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Neighbor Default Encapsulation MPLS Next Hop Self" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family VPN IPv6" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "bgp": { - "type": "object", - "properties": { - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - }, - "evpn_multicast": { - "type": "boolean", - "title": "EVPN Multicast" - }, - "evpn_multicast_address_family": { - "type": "object", - "description": "Enable per-AF EVPN multicast settings.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "transit": { - "type": "boolean", - "description": "Enable EVPN multicast transit mode.", - "title": "Transit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Multicast Address Family" - }, - "evpn_multicast_gateway_dr_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "description": "DR election algorithms:\n hrw: Default selection based on highest random weight.\n modulus: Selection based on VLAN ID modulo number of candidates.\n preference: Selection based on a configured preference value.", - "enum": [ - "hrw", - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "description": "Required when `algorithm` is `preference`.", - "minimum": 0, - "maximum": 65535, - "title": "Preference Value" - } - }, - "required": [ - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Multicast Gateway DR Election" - }, - "default_route_exports": { - "type": "array", - "description": "Enable default-originate per VRF/address-family.", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "enum": [ - "evpn", - "vpn-ipv4", - "vpn-ipv6" - ], - "title": "Address Family" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Default Route Exports" - }, - "route_targets": { - "type": "object", - "properties": { - "import": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "route_targets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Route Targets" - }, - "route_map": { - "type": "string", - "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "RCF" - }, - "vpn_route_filter_rcf": { - "type": "string", - "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", - "title": "VPN Route Filter RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "route_targets": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Route Targets" - }, - "route_map": { - "type": "string", - "description": "Only applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "Route Map" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `evpn`, `vpn-ipv4` or `vpn-ipv6`.", - "title": "RCF" - }, - "vpn_route_filter_rcf": { - "type": "string", - "description": "RCF function name with parenthesis for filtering VPN routes. Also requires `rcf` to be set.\nExample: MyFunction(myarg).\nOnly applicable if `address_family` is one of `vpn-ipv4` or `vpn-ipv6`.", - "title": "VPN Route Filter RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Export" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "router_id": { - "description": "in IP address format A.B.C.D.", - "type": "string", - "title": "Router ID" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "updates": { - "type": "object", - "properties": { - "wait_for_convergence": { - "type": "boolean", - "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n", - "title": "Wait For Convergence" - }, - "wait_install": { - "type": "boolean", - "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n", - "title": "Wait Install" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Updates" - }, - "listen_ranges": { - "type": "array", - "description": "Improved \"listen_ranges\" data model to support multiple listen ranges and additional filter capabilities.\n", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "peer_id_include_router_id": { - "type": "boolean", - "description": "Include router ID as part of peer filter.", - "title": "Peer ID Include Router ID" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.\nnote: `peer_filter`` or `remote_as` is required but mutually exclusive.\nIf both are defined, peer_filter takes precedence.\n", - "title": "Peer Filter" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Listen Ranges" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "password": { - "type": "string", - "title": "Password" - }, - "passive": { - "type": "boolean", - "title": "Passive" - }, - "remove_private_as": { - "type": "object", - "description": "Remove private AS numbers in outbound AS path.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As" - }, - "remove_private_as_ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "replace_as": { - "type": "boolean", - "title": "Replace As" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Remove Private As Ingress" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Weight" - }, - "local_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Local As" - }, - "as_path": { - "type": "object", - "description": "BGP AS-PATH options.", - "properties": { - "remote_as_replace_out": { - "type": "boolean", - "description": "Replace AS number with local AS number.", - "title": "Remote As Replace Out" - }, - "prepend_own_disabled": { - "type": "boolean", - "description": "Disable prepending own AS number to AS path.", - "title": "Prepend Own Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "As Path" - }, - "description": { - "type": "string", - "title": "Description" - }, - "route_reflector_client": { - "type": "boolean", - "title": "Route Reflector Client" - }, - "ebgp_multihop": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Time-to-live in range of hops.", - "title": "Ebgp Multihop" - }, - "next_hop_self": { - "type": "boolean", - "title": "Next Hop Self" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "bfd": { - "type": "boolean", - "description": "Enable BFD.", - "title": "BFD" - }, - "bfd_timers": { - "type": "object", - "description": "Override default BFD timers. BFD must be enabled with `bfd: true`.", - "properties": { - "interval": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "minimum": 50, - "maximum": 60000, - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "required": [ - "interval", - "min_rx", - "multiplier" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Timers" - }, - "timers": { - "type": "string", - "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\".", - "title": "Timers" - }, - "rib_in_pre_policy_retain": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "all": { - "type": "boolean", - "title": "All" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rib In Pre Policy Retain" - }, - "send_community": { - "type": "string", - "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'.", - "title": "Send Community" - }, - "maximum_routes": { - "type": "integer", - "title": "Maximum Routes" - }, - "maximum_routes_warning_limit": { - "type": "string", - "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\").\n", - "title": "Maximum Routes Warning Limit" - }, - "maximum_routes_warning_only": { - "type": "boolean", - "title": "Maximum Routes Warning Only" - }, - "allowas_in": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "times": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "description": "Number of local ASNs allowed in a BGP update.", - "title": "Times" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Allowas In" - }, - "default_originate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Originate" - }, - "update_source": { - "type": "string", - "title": "Update Source" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_in or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_in instead.", - "deprecated": true, - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_out or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_out instead.", - "deprecated": true, - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "neighbor_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "remote_as": { - "type": "string", - "description": "BGP AS <1-4294967295> or AS number in asdot notation \"<1-65535>.<0-65535>\".\nFor asdot notation in YAML inputs, the value must be put in quotes, to prevent it from being interpreted as a float number.", - "title": "Remote As" - }, - "peer_group": { - "type": "string", - "description": "Peer-group name.", - "title": "Peer Group" - }, - "peer_filter": { - "type": "string", - "description": "Peer-filter name.", - "title": "Peer Filter" - }, - "description": { - "type": "string", - "title": "Description" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Neighbor Interfaces" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - }, - "aggregate_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "advertise_only": { - "type": "boolean", - "title": "Advertise Only" - }, - "as_set": { - "type": "boolean", - "title": "As Set" - }, - "summary_only": { - "type": "boolean", - "title": "Summary Only" - }, - "attribute_map": { - "type": "string", - "title": "Attribute Map" - }, - "match_map": { - "type": "string", - "title": "Match Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Aggregate Addresses" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "originate": { - "type": "boolean", - "title": "Originate" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dynamic", - "isis", - "ospf", - "ospfv3", - "rip", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "install": { - "type": "boolean", - "title": "Install" - }, - "install_ecmp_primary": { - "type": "boolean", - "title": "Install ECMP Primary" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "send": { - "type": "object", - "properties": { - "any": { - "type": "boolean", - "title": "Any" - }, - "backup": { - "type": "boolean", - "title": "Backup" - }, - "ecmp": { - "type": "boolean", - "title": "ECMP" - }, - "ecmp_limit": { - "type": "integer", - "description": "Amount of ECMP paths to send.", - "minimum": 2, - "maximum": 64, - "title": "ECMP Limit" - }, - "limit": { - "type": "integer", - "description": "Amount of paths to send.", - "minimum": 2, - "maximum": 64, - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Send" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - }, - "redistribute_internal": { - "type": "boolean", - "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.", - "title": "Redistribute Internal" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - }, - "rcf_in": { - "type": "string", - "description": "Inbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF In" - }, - "rcf_out": { - "type": "string", - "description": "Outbound RCF function name with parenthesis.\nExample: MyFunction(myarg).", - "title": "RCF Out" - }, - "prefix_list_in": { - "type": "string", - "description": "Inbound prefix-list name.", - "title": "Prefix List In" - }, - "prefix_list_out": { - "type": "string", - "description": "Outbound prefix-list name.", - "title": "Prefix List Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "bgp", - "connected", - "dhcp", - "dynamic", - "isis", - "ospfv3", - "static", - "user" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "address_family_ipv4_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A.B.C.D/E\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "attached-host", - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4 Multicast" - }, - "address_family_ipv6_multicast": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "object", - "properties": { - "receive": { - "type": "boolean", - "title": "Receive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "description": "Only applicable if `source_protocol` is `isis`.", - "title": "Include Leaked" - }, - "rcf": { - "type": "string", - "description": "RCF function name with parenthesis.\nExample: MyFunction(myarg).\n`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.\nOnly applicable if `source_protocol` is `isis`.", - "title": "RCF" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external", - "nssa-external 1", - "nssa-external 2" - ], - "description": "Routes learned by the OSPF protocol.\nThe `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.\n", - "title": "OSPF Route Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source_protocol" - ] - }, - "title": "Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6 Multicast" - }, - "address_family_flow_spec_ipv4": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv4" - }, - "address_family_flow_spec_ipv6": { - "type": "object", - "properties": { - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family Flow Spec IPv6" - }, - "address_families": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "title": "Address Family" - }, - "bgp": { - "type": "object", - "properties": { - "missing_policy": { - "type": "object", - "properties": { - "direction_in_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction In Action" - }, - "direction_out_action": { - "type": "string", - "enum": [ - "deny", - "deny-in-out", - "permit" - ], - "title": "Direction Out Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Missing Policy" - }, - "additional_paths": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Additional Paths" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "neighbors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "route_map_in": { - "type": "string", - "description": "Inbound route-map name.", - "title": "Route Map In" - }, - "route_map_out": { - "type": "string", - "description": "Outbound route-map name.", - "title": "Route Map Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Neighbors" - }, - "peer_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Peer-group name.", - "title": "Name" - }, - "activate": { - "type": "boolean", - "title": "Activate" - }, - "next_hop": { - "type": "object", - "properties": { - "address_family_ipv6_originate": { - "type": "boolean", - "title": "Address Family IPv6 Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Next Hop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Peer Groups" - }, - "networks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "IPv4 prefix \"A.B.C.D/E\" or IPv6 prefix \"A:B:C:D:E:F:G:H/I\".", - "title": "Prefix" - }, - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Networks" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address_family" - ] - }, - "title": "Address Families" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "session_trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of session tracker.", - "title": "Name" - }, - "recovery_delay": { - "type": "integer", - "description": "Recovery delay in seconds.", - "minimum": 1, - "maximum": 3600, - "title": "Recovery Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Session Trackers" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router BGP" - }, - "router_general": { - "type": "object", - "title": "Router General configuration", - "properties": { - "router_id": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "description": "IPv4 Address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "IPv6 Address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ID" - }, - "nexthop_fast_failover": { - "type": "boolean", - "default": false, - "title": "Nexthop Fast Failover" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Destination-VRF.", - "title": "Name" - }, - "leak_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_vrf": { - "type": "string", - "title": "Source VRF" - }, - "subscribe_policy": { - "type": "string", - "description": "Route-Map Policy.", - "title": "Subscribe Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Leak Routes" - }, - "routes": { - "type": "object", - "properties": { - "dynamic_prefix_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Dynamic Prefix List Name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "control_functions": { - "type": "object", - "description": "Routing control functions (RCF) used to filter and update routes from a peer or during redistributions.\nWarning:\nThis configuration cannot be pushed with `eos_config_deploy_eapi`, because of limitations in `arista.eos` and `ansible.netcommon` plugins.\nThe configuration can be pushed via CloudVision with `eos_config_deploy_cvp` or `cv_deploy`.", - "properties": { - "code_units": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the code unit.", - "title": "Name" - }, - "content": { - "type": "string", - "description": "Content of route control function.\ne.g.\nfunction ACCEPT_ALL() {\n return true;\n }\nEOF", - "title": "Content" - } - }, - "required": [ - "content", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Code Units" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Functions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_igmp": { - "type": "object", - "title": "Router IGMP Configuration", - "properties": { - "host_proxy_match_mroute": { - "type": "string", - "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", - "enum": [ - "all", - "iif" - ], - "title": "Host Proxy Match Mroute" - }, - "ssm_aware": { - "type": "boolean", - "title": "Ssm Aware" - }, - "vrfs": { - "type": "array", - "description": "Configure IGMP in a VRF.\nVRF 'default' is not supported in EOS, please see keys directly under 'router_igmp'.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "host_proxy_match_mroute": { - "type": "string", - "description": "Specify conditions for sending IGMP joins for host-proxy.\n'iif' will enable igmp host-proxy to work in iif aware.\n'all' will enable igmp host-proxy to work in iif unaware mode (EOS default).\n", - "enum": [ - "all", - "iif" - ], - "title": "Host Proxy Match Mroute" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_internet_exit": { - "type": "object", - "description": "Internet-exit feature to configure internet bound service for virtual topologies.", - "properties": { - "policies": { - "type": "array", - "description": "Internet-exit policy represent a policy which can be attached to a virtual topology profile.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "exit_groups": { - "type": "array", - "description": "The exit groups that are configured under a policy are strictly ordered, meaning an exit group appearing first has more priority than the exit group that follows it.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Exit Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "exit_groups": { - "type": "array", - "description": "Exit groups represent a group of exit options (connections).\nTraffic flows are load balanced in a round robin fashion across all the members (exits) of the exit-group.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "fib_default": { - "type": "boolean", - "description": "Fib default exit indicates that the flows that select this exit will follow the default route available in the VRF of the flow.", - "title": "Fib Default" - }, - "local_connections": { - "type": "array", - "description": "Local connections refer to connections configured under the `router_service_insertion`.\nThe service-insertion module reports the health of the connection and the exit will qualify for use only when it is healthy.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Local Connections" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Exit Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Internet Exit" - }, - "router_isis": { - "type": "object", - "properties": { - "instance": { - "type": "string", - "description": "ISIS Instance Name.", - "title": "Instance" - }, - "net": { - "type": "string", - "description": "CLNS Address like \"49.0001.0001.0000.0001.00\".", - "title": "Net" - }, - "router_id": { - "type": "string", - "description": "IPv4 Address.", - "title": "Router ID" - }, - "is_type": { - "title": "IS Type", - "type": "string", - "enum": [ - "level-1", - "level-1-2", - "level-2" - ] - }, - "log_adjacency_changes": { - "type": "boolean", - "title": "Log Adjacency Changes" - }, - "mpls_ldp_sync_default": { - "type": "boolean", - "title": "MPLS LDP Sync Default" - }, - "timers": { - "type": "object", - "properties": { - "local_convergence": { - "type": "object", - "properties": { - "protected_prefixes": { - "type": "boolean", - "title": "Protected Prefixes" - }, - "delay": { - "type": "integer", - "default": 10000, - "description": "Delay in milliseconds.", - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Local Convergence" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "set_overload_bit": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "on_startup": { - "type": "object", - "properties": { - "delay": { - "type": "integer", - "description": "Number of seconds.", - "title": "Delay" - }, - "wait_for_bgp": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "description": "Number of seconds.", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wait For BGP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "On Startup" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Set Overload Bit" - }, - "authentication": { - "type": "object", - "properties": { - "both": { - "type": "object", - "description": "Authentication settings for level-1 and level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Both" - }, - "level_1": { - "type": "object", - "description": "Authentication settings for level-1. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Level 1" - }, - "level_2": { - "type": "object", - "description": "Authentication settings for level-2. 'both' takes precedence over 'level_1' and 'level_2' settings.", - "properties": { - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type. Default key_id is 0.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "key_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "Configure authentication key-id.", - "title": "ID" - }, - "algorithm": { - "type": "string", - "enum": [ - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "description": "Configure authentication key type.", - "title": "Key Type" - }, - "key": { - "type": "string", - "description": "Password string.", - "title": "Key" - }, - "rfc_5310": { - "description": "SHA digest computation according to rfc5310.", - "type": "boolean", - "title": "Rfc 5310" - } - }, - "required": [ - "id", - "algorithm", - "key_type", - "key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Key IDs" - }, - "mode": { - "type": "string", - "description": "Authentication mode.", - "enum": [ - "md5", - "sha", - "text", - "shared_secret" - ], - "title": "Mode" - }, - "sha": { - "type": "object", - "description": "Required settings for authentication mode 'sha'.", - "properties": { - "key_id": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Key ID" - } - }, - "required": [ - "key_id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sha" - }, - "shared_secret": { - "type": "object", - "description": "Required settings for authentication mode 'shared_secret'.", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - }, - "algorithm": { - "type": "string", - "enum": [ - "md5", - "sha-1", - "sha-224", - "sha-256", - "sha-384", - "sha-512" - ], - "title": "Algorithm" - } - }, - "required": [ - "profile", - "algorithm" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shared Secret" - }, - "rx_disabled": { - "type": "boolean", - "title": "RX Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Level 2" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication" - }, - "advertise": { - "type": "object", - "properties": { - "passive_only": { - "type": "boolean", - "title": "Passive Only" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertise" - }, - "address_family": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "ipv4 unicast", - "ipv6 unicast" - ], - "description": "Address Family.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4.enabled or address_family_ipv6.enabled instead.", - "deprecated": true - }, - "title": "Address Family" - }, - "isis_af_defaults": { - "type": "array", - "items": { - "type": "string", - "description": "EOS CLI rendered under the address families.\nExample \"maximum-paths 64\"\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use address_family_ipv4/address_family_ipv6 instead.", - "deprecated": true - }, - "title": "ISIS AF Defaults" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_protocol": { - "type": "string", - "enum": [ - "bgp", - "connected", - "isis", - "ospf", - "ospfv3", - "static" - ], - "title": "Source Protocol" - }, - "route_map": { - "type": "string", - "description": "Route-map name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - }, - "ospf_route_type": { - "type": "string", - "enum": [ - "external", - "internal", - "nssa-external" - ], - "description": "ospf_route_type is required with source_protocols 'ospf' and 'ospfv3'.", - "title": "OSPF Route Type" - } - }, - "required": [ - "source_protocol" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Redistribute Routes" - }, - "address_family_ipv4": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "bfd_all_interfaces": { - "type": "boolean", - "description": "Enable BFD on all interfaces.", - "title": "BFD All Interfaces" - }, - "fast_reroute_ti_lfa": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "link-protection", - "node-protection" - ], - "title": "Mode" - }, - "level": { - "type": "string", - "enum": [ - "level-1", - "level-2" - ], - "title": "Level" - }, - "srlg": { - "type": "object", - "description": "Shared Risk Link Group.", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "strict": { - "type": "boolean", - "title": "Strict" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SRLG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fast Reroute TI LFA" - }, - "tunnel_source_labeled_unicast": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rcf": { - "type": "string", - "description": "Route Control Function.", - "title": "RCF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tunnel Source Labeled Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv4" - }, - "address_family_ipv6": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "bfd_all_interfaces": { - "type": "boolean", - "description": "Enable BFD on all interfaces.", - "title": "BFD All Interfaces" - }, - "fast_reroute_ti_lfa": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "link-protection", - "node-protection" - ], - "title": "Mode" - }, - "level": { - "type": "string", - "enum": [ - "level-1", - "level-2" - ], - "description": "Optional, default is to protect all levels.", - "title": "Level" - }, - "srlg": { - "type": "object", - "description": "Shared Risk Link Group.", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "strict": { - "type": "boolean", - "title": "Strict" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SRLG" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fast Reroute TI LFA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Family IPv6" - }, - "segment_routing_mpls": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "router_id": { - "type": "string", - "title": "Router ID" - }, - "prefix_segments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "title": "Prefix" - }, - "index": { - "type": "integer", - "title": "Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Prefix Segments" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Segment Routing MPLS" - }, - "spf_interval": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Maximum interval between two SPFs in seconds or milliseconds.\nRange in seconds: <1-300>\nRange in milliseconds: <1-300000>", - "title": "Interval" - }, - "interval_unit": { - "type": "string", - "enum": [ - "seconds", - "milliseconds" - ], - "description": "If interval unit is not defined EOS takes `seconds` by default.", - "title": "Interval Unit" - }, - "wait_interval": { - "type": "integer", - "minimum": 1, - "maximum": 300000, - "description": "Initial wait interval for SPF in milliseconds.", - "title": "Wait Interval" - }, - "hold_interval": { - "type": "integer", - "minimum": 1, - "maximum": 300000, - "description": "Hold interval between the first and second SPF runs in milliseconds.", - "title": "Hold Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SPF Interval" - }, - "graceful_restart": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "restart_hold_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Number of seconds.", - "title": "Restart Hold Time" - }, - "t2": { - "type": "object", - "properties": { - "level_1_wait_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Level-1 LSP database sync wait time in seconds.", - "title": "Level 1 Wait Time" - }, - "level_2_wait_time": { - "type": "integer", - "minimum": 5, - "maximum": 300, - "description": "Level-2 LSP database sync wait time in seconds.", - "title": "Level 2 Wait Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "T2" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Graceful Restart" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the router isis in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "required": [ - "instance" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ISIS" - }, - "router_l2_vpn": { - "type": "object", - "properties": { - "arp_learning_bridged": { - "type": "boolean", - "title": "ARP Learning Bridged" - }, - "arp_proxy": { - "type": "object", - "properties": { - "prefix_list": { - "type": "string", - "description": "Prefix-list name. ARP Proxying is disabled for IPv4 addresses defined in the prefix-list.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ARP Proxy" - }, - "arp_selective_install": { - "type": "boolean", - "title": "ARP Selective Install" - }, - "nd_learning_bridged": { - "type": "boolean", - "title": "ND Learning Bridged" - }, - "nd_proxy": { - "type": "object", - "properties": { - "prefix_list": { - "type": "string", - "description": "Prefix-list name. Neighbor Discovery Proxying is disabled for IPv6 addresses defined in the prefix-list.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "ND Proxy" - }, - "nd_rs_flooding_disabled": { - "type": "boolean", - "title": "ND RS Flooding Disabled" - }, - "virtual_router_nd_ra_flooding_disabled": { - "type": "boolean", - "title": "Virtual Router ND RA Flooding Disabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router L2 VPN" - }, - "router_msdp": { - "type": "object", - "properties": { - "originator_id_local_interface": { - "type": "string", - "description": "Interface to use for originator ID.", - "title": "Originator ID Local Interface" - }, - "rejected_limit": { - "type": "integer", - "description": "Maximum number of rejected SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Rejected Limit" - }, - "forward_register_packets": { - "type": "boolean", - "title": "Forward Register Packets" - }, - "connection_retry_interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Connection Retry Interval" - }, - "group_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "type": "string", - "description": "Source address prefix.", - "title": "Source Prefix" - }, - "limit": { - "type": "integer", - "description": "Limit for SAs matching the source address prefix.", - "minimum": 0, - "maximum": 40000, - "title": "Limit" - } - }, - "required": [ - "limit", - "source_prefix" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Group Limits" - }, - "peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "Peer IP Address.", - "title": "IPv4 Address" - }, - "default_peer": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "prefix_list": { - "type": "string", - "description": "Prefix list to filter source of SA messages.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Peer" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "description": { - "type": "string", - "title": "Description" - }, - "disabled": { - "type": "boolean", - "description": "Disable the MSDP peer.", - "title": "Disabled" - }, - "sa_limit": { - "type": "integer", - "description": "Maximum number of SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Sa Limit" - }, - "mesh_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Mesh group name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Mesh Groups" - }, - "keepalive": { - "type": "object", - "properties": { - "keepalive_timer": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Keepalive Timer" - }, - "hold_timer": { - "type": "integer", - "description": "Must be greater than keepalive timer.", - "minimum": 1, - "maximum": 65535, - "title": "Hold Timer" - } - }, - "required": [ - "keepalive_timer", - "hold_timer" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - }, - "sa_filter": { - "type": "object", - "properties": { - "in_list": { - "type": "string", - "description": "ACL to filter inbound SA messages.", - "title": "In List" - }, - "out_list": { - "type": "string", - "description": "ACL to filter outbound SA messages.", - "title": "Out List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_address" - ] - }, - "title": "Peers" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "originator_id_local_interface": { - "type": "string", - "description": "Interface to use for originator ID.", - "title": "Originator ID Local Interface" - }, - "rejected_limit": { - "type": "integer", - "description": "Maximum number of rejected SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Rejected Limit" - }, - "forward_register_packets": { - "type": "boolean", - "title": "Forward Register Packets" - }, - "connection_retry_interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Connection Retry Interval" - }, - "group_limits": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "type": "string", - "description": "Source address prefix.", - "title": "Source Prefix" - }, - "limit": { - "type": "integer", - "description": "Limit for SAs matching the source address prefix.", - "minimum": 0, - "maximum": 40000, - "title": "Limit" - } - }, - "required": [ - "limit", - "source_prefix" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Group Limits" - }, - "peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_address": { - "type": "string", - "description": "Peer IP Address.", - "title": "IPv4 Address" - }, - "default_peer": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "prefix_list": { - "type": "string", - "description": "Prefix list to filter source of SA messages.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Peer" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "description": { - "type": "string", - "title": "Description" - }, - "disabled": { - "type": "boolean", - "description": "Disable the MSDP peer.", - "title": "Disabled" - }, - "sa_limit": { - "type": "integer", - "description": "Maximum number of SA messages allowed in cache.", - "minimum": 0, - "maximum": 40000, - "title": "Sa Limit" - }, - "mesh_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Mesh group name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Mesh Groups" - }, - "keepalive": { - "type": "object", - "properties": { - "keepalive_timer": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Keepalive Timer" - }, - "hold_timer": { - "type": "integer", - "description": "Must be greater than keepalive timer.", - "minimum": 1, - "maximum": 65535, - "title": "Hold Timer" - } - }, - "required": [ - "keepalive_timer", - "hold_timer" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - }, - "sa_filter": { - "type": "object", - "properties": { - "in_list": { - "type": "string", - "description": "ACL to filter inbound SA messages.", - "title": "In List" - }, - "out_list": { - "type": "string", - "description": "ACL to filter outbound SA messages.", - "title": "Out List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sa Filter" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_address" - ] - }, - "title": "Peers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Msdp" - }, - "router_multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "activity_polling_interval": { - "type": "integer", - "minimum": 1, - "maximum": 60, - "description": "MFIB entry activity polling interval.", - "title": "Activity Polling Interval" - }, - "counters": { - "type": "object", - "properties": { - "rate_period_decay": { - "description": "Rate in seconds.", - "type": "integer", - "minimum": 0, - "maximum": 600, - "title": "Rate Period Decay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Counters" - }, - "routing": { - "type": "boolean", - "title": "Routing" - }, - "multipath": { - "type": "string", - "enum": [ - "none", - "deterministic", - "deterministic color", - "deterministic router-id" - ], - "title": "Multipath" - }, - "software_forwarding": { - "type": "string", - "enum": [ - "kernel", - "sfe" - ], - "title": "Software Forwarding" - }, - "rpf": { - "type": "object", - "properties": { - "routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "source_prefix": { - "description": "Source address A.B.C.D or Source prefix A.B.C.D/E.", - "type": "string", - "title": "Source Prefix" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nexthop": { - "description": "Next-hop IP address or interface name.", - "type": "string", - "title": "Nexthop" - }, - "distance": { - "description": "Administrative distance for this route.", - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "nexthop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Destinations" - } - }, - "required": [ - "source_prefix", - "destinations" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rpf" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "activity_polling_interval": { - "type": "integer", - "minimum": 1, - "maximum": 60, - "description": "MFIB entry activity polling interval.", - "title": "Activity Polling Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "ipv4": { - "type": "object", - "properties": { - "routing": { - "type": "boolean", - "title": "Routing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Multicast" - }, - "router_ospf": { - "type": "object", - "title": "Router OSPF Configuration", - "properties": { - "process_ids": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "OSPF Process ID.", - "title": "ID" - }, - "vrf": { - "type": "string", - "description": "VRF Name for OSPF Process.", - "title": "VRF" - }, - "passive_interface_default": { - "type": "boolean", - "title": "Passive Interface Default" - }, - "router_id": { - "type": "string", - "description": "IPv4 Address.", - "title": "Router ID" - }, - "distance": { - "type": "object", - "properties": { - "external": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "External" - }, - "inter_area": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Inter Area" - }, - "intra_area": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Intra Area" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distance" - }, - "log_adjacency_changes_detail": { - "type": "boolean", - "title": "Log Adjacency Changes Detail" - }, - "network_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv4_prefix": { - "type": "string", - "title": "IPv4 Prefix" - }, - "area": { - "type": "string", - "title": "Area" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv4_prefix" - ] - }, - "title": "Network Prefixes" - }, - "bfd_enable": { - "type": "boolean", - "title": "BFD Enable" - }, - "bfd_adjacency_state_any": { - "type": "boolean", - "title": "BFD Adjacency State Any" - }, - "no_passive_interfaces": { - "type": "array", - "items": { - "type": "string", - "description": "Interface Name." - }, - "title": "No Passive Interfaces" - }, - "distribute_list_in": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "title": "Route Map" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Distribute List In" - }, - "max_lsa": { - "type": "integer", - "title": "Max LSA" - }, - "timers": { - "type": "object", - "properties": { - "lsa": { - "type": "object", - "properties": { - "rx_min_interval": { - "type": "integer", - "description": "Min interval in msecs between accepting the same LSA.", - "minimum": 0, - "maximum": 600000, - "title": "RX Min Interval" - }, - "tx_delay": { - "type": "object", - "properties": { - "initial": { - "type": "integer", - "description": "Delay to generate first occurrence of LSA in msecs.", - "minimum": 0, - "maximum": 600000, - "title": "Initial" - }, - "min": { - "type": "integer", - "description": "Min delay between originating the same LSA in msecs.", - "minimum": 1, - "maximum": 600000, - "title": "Min" - }, - "max": { - "type": "integer", - "description": "1-600000 Maximum delay between originating the same LSA in msec.", - "minimum": 1, - "maximum": 600000, - "title": "Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TX Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LSA" - }, - "spf_delay": { - "type": "object", - "properties": { - "initial": { - "type": "integer", - "description": "Initial SPF schedule delay in msecs.", - "minimum": 0, - "maximum": 600000, - "title": "Initial" - }, - "min": { - "type": "integer", - "description": "Min Hold time between two SPFs in msecs.", - "minimum": 0, - "maximum": 65535000, - "title": "Min" - }, - "max": { - "type": "integer", - "description": "Max wait time between two SPFs in msecs.", - "minimum": 0, - "maximum": 65535000, - "title": "Max" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SPF Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "default_information_originate": { - "type": "object", - "properties": { - "always": { - "type": "boolean", - "title": "Always" - }, - "metric": { - "type": "integer", - "description": "Metric for default route.", - "minimum": 1, - "maximum": 65535, - "title": "Metric" - }, - "metric_type": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "description": "OSPF metric type for default route.", - "title": "Metric Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Information Originate" - }, - "summary_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "prefix": { - "type": "string", - "description": "Summary Prefix Address.", - "title": "Prefix" - }, - "tag": { - "type": "integer", - "title": "Tag" - }, - "attribute_map": { - "type": "string", - "title": "Attribute Map" - }, - "not_advertise": { - "type": "boolean", - "title": "Not Advertise" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "prefix" - ] - }, - "title": "Summary Addresses" - }, - "redistribute": { - "type": "object", - "properties": { - "static": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Static" - }, - "connected": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Connected" - }, - "bgp": { - "type": "object", - "properties": { - "route_map": { - "type": "string", - "description": "Route Map Name.", - "title": "Route Map" - }, - "include_leaked": { - "type": "boolean", - "title": "Include Leaked" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redistribute" - }, - "auto_cost_reference_bandwidth": { - "type": "integer", - "description": "Bandwidth in mbps.", - "title": "Auto Cost Reference Bandwidth" - }, - "areas": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "title": "ID" - }, - "filter": { - "type": "object", - "properties": { - "networks": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 Prefix." - }, - "title": "Networks" - }, - "prefix_list": { - "type": "string", - "description": "Prefix-List Name.", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Filter" - }, - "type": { - "type": "string", - "enum": [ - "normal", - "stub", - "nssa" - ], - "default": "normal", - "title": "Type" - }, - "no_summary": { - "type": "boolean", - "title": "No Summary" - }, - "nssa_only": { - "type": "boolean", - "title": "Nssa Only" - }, - "default_information_originate": { - "type": "object", - "properties": { - "metric": { - "type": "integer", - "description": "Metric for default route.", - "minimum": 1, - "maximum": 65535, - "title": "Metric" - }, - "metric_type": { - "type": "integer", - "enum": [ - 1, - 2 - ], - "description": "OSPF metric type for default route.", - "title": "Metric Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Information Originate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Areas" - }, - "maximum_paths": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "title": "Maximum Paths" - }, - "max_metric": { - "type": "object", - "properties": { - "router_lsa": { - "type": "object", - "properties": { - "external_lsa": { - "type": "object", - "properties": { - "override_metric": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "title": "Override Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "External LSA" - }, - "include_stub": { - "type": "boolean", - "title": "Include Stub" - }, - "on_startup": { - "type": "string", - "description": "\"wait-for-bgp\" or Integer 5-86400.\nExample: \"wait-for-bgp\" Or \"222\"\n", - "title": "On Startup" - }, - "summary_lsa": { - "type": "object", - "properties": { - "override_metric": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "title": "Override Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Summary LSA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router LSA" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Max Metric" - }, - "mpls_ldp_sync_default": { - "type": "boolean", - "title": "MPLS LDP Sync Default" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router OSPF process ID in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Process IDs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "router_path_selection": { - "type": "object", - "description": "Dynamic path selection configuration.", - "properties": { - "peer_dynamic_source": { - "type": "string", - "enum": [ - "stun" - ], - "description": "Source of dynamic peer discovery.", - "title": "Peer Dynamic Source" - }, - "path_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path group name.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Path group ID.", - "minimum": 1, - "maximum": 65535, - "title": "ID" - }, - "ipsec_profile": { - "type": "string", - "description": "IPSec profile for the path group.", - "title": "Ipsec Profile" - }, - "flow_assignment": { - "type": "string", - "enum": [ - "lan" - ], - "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", - "title": "Flow Assignment" - }, - "local_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Local interface name.", - "pattern": "^Ethernet\\d+(/\\d+)*(\\.\\d+)?$", - "title": "Name" - }, - "public_address": { - "type": "string", - "description": "Public IP assigned by NAT.", - "title": "Public Address" - }, - "stun": { - "type": "object", - "properties": { - "server_profiles": { - "type": "array", - "minItems": 1, - "maxItems": 12, - "description": "STUN server-profile names.", - "items": { - "type": "string" - }, - "title": "Server Profiles" - } - }, - "required": [ - "server_profiles" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Interfaces" - }, - "local_ips": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "public_address": { - "type": "string", - "description": "Public IP assigned by NAT.", - "title": "Public Address" - }, - "stun": { - "type": "object", - "properties": { - "server_profiles": { - "type": "array", - "minItems": 1, - "maxItems": 12, - "description": "STUN server-profile names.", - "items": { - "type": "string" - }, - "title": "Server Profiles" - } - }, - "required": [ - "server_profiles" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_address" - ] - }, - "title": "Local Ips" - }, - "dynamic_peers": { - "type": "object", - "description": "Flow assignment `lan` can not be configured in a path group with dynamic peers.", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable `peer dynamic`.", - "title": "Enabled" - }, - "ip_local": { - "type": "boolean", - "description": "Prefer local IP address.", - "title": "IP Local" - }, - "ipsec": { - "type": "boolean", - "description": "IPsec configuration for dynamic peers.", - "title": "Ipsec" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dynamic Peers" - }, - "static_peers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "router_ip": { - "type": "string", - "description": "Peer router IP.", - "title": "Router IP" - }, - "name": { - "type": "string", - "description": "Name of the site.", - "title": "Name" - }, - "ipv4_addresses": { - "type": "array", - "description": "Static IPv4 addresses.", - "items": { - "type": "string" - }, - "title": "IPv4 Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "router_ip" - ] - }, - "title": "Static Peers" - }, - "keepalive": { - "type": "object", - "properties": { - "auto": { - "type": "boolean", - "description": "Enable adaptive keepalive and feedback interval.", - "default": false, - "title": "Auto" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "minimum": 50, - "maximum": 60000, - "title": "Interval" - }, - "failure_threshold": { - "type": "integer", - "minimum": 2, - "maximum": 100, - "description": "Failure threshold in number of intervals. Required when `interval` is set.", - "title": "Failure Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Keepalive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Path Groups" - }, - "load_balance_policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Load-balance policy name.", - "title": "Name" - }, - "lowest_hop_count": { - "type": "boolean", - "description": "Prefer paths with lowest hop-count.", - "title": "Lowest Hop Count" - }, - "jitter": { - "type": "integer", - "description": "Jitter requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Jitter" - }, - "latency": { - "type": "integer", - "description": "One way delay requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Latency" - }, - "loss_rate": { - "type": "string", - "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "title": "Loss Rate" - }, - "path_groups": { - "type": "array", - "description": "List of path-groups to use for this load balance policy.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path-group name.", - "title": "Name" - }, - "priority": { - "type": "integer", - "description": "Priority for this path-group.\nThe EOS default value is 1.", - "minimum": 1, - "maximum": 65535, - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Path Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Load Balance Policies" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "DPS policy name.", - "title": "Name" - }, - "default_match": { - "type": "object", - "properties": { - "load_balance": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Match" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "Rule ID.", - "minimum": 1, - "maximum": 255, - "title": "ID" - }, - "application_profile": { - "type": "string", - "title": "Application Profile" - }, - "load_balance": { - "type": "string", - "description": "Name of the load-balance policy.", - "title": "Load Balance" - } - }, - "required": [ - "application_profile", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Rules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "path_selection_policy": { - "type": "string", - "description": "DPS policy name to use for this VRF.", - "title": "Path Selection Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4_segment_size": { - "type": "string", - "description": "Segment Size for IPv4.\nCan be an integer in the range 64-65515 or \"auto\".\n\"auto\" will enable auto-discovery which clamps the TCP MSS value to the minimum of all the direct paths\nand multi-hop path MTU towards a remote VTEP (minus 40bytes to account for IP + TCP header).", - "title": "IPv4 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "ingress" - ], - "default": "ingress", - "description": "Enforce on packets through DPS tunnel for a specific direction.\nOnly 'ingress' direction is supported.", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Path Selection" - }, - "router_pim_sparse_mode": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "bfd": { - "type": "boolean", - "description": "Enable/Disable BFD.", - "title": "BFD" - }, - "ssm_range": { - "type": "string", - "description": "IPv4 Prefix associated with SSM.", - "title": "Ssm Range" - }, - "rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "RP Address.", - "title": "Address" - }, - "groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Groups" - }, - "access_lists": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Access Lists" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority" - }, - "hashmask": { - "type": "integer", - "minimum": 0, - "maximum": 32, - "title": "Hashmask" - }, - "override": { - "type": "boolean", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "RP Addresses" - }, - "anycast_rps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Anycast RP Address.", - "title": "Address" - }, - "other_anycast_rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Other Anycast RP Address.", - "title": "Address" - }, - "register_count": { - "type": "integer", - "title": "Register Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "Other Anycast RP Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "Anycast RPs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "ipv4": { - "type": "object", - "properties": { - "bfd": { - "type": "boolean", - "description": "Enable/Disable BFD.", - "title": "BFD" - }, - "rp_addresses": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "RP Address.", - "title": "Address" - }, - "groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Groups" - }, - "access_lists": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Access Lists" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Priority" - }, - "hashmask": { - "type": "integer", - "minimum": 0, - "maximum": 32, - "title": "Hashmask" - }, - "override": { - "type": "boolean", - "title": "Override" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "RP Addresses" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router PIM Sparse Mode" - }, - "router_segment_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "policies": { - "type": "array", - "description": "Customised application policies.\nUsing the Application Traffic Recognition L4 profiles, custom policies can be defined. The built-in application 'app-match-all' can be used to match any packets.\nNote that this is stateless, so both the source and destination flows need to be considered.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Policy name.", - "title": "Name" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "minimum": 1, - "maximum": 1023, - "title": "Sequence" - }, - "application": { - "type": "string", - "description": "The name of the application.", - "title": "Application" - }, - "action": { - "type": "string", - "description": "The action to take - note that platform support for the redirect action is limited. The \"redirect\" action also requires the 'next_hop' to be configured.", - "enum": [ - "forward", - "drop", - "redirect" - ], - "title": "Action" - }, - "log": { - "type": "boolean", - "description": "Enable logging - note that platform support is limited.", - "title": "Log" - }, - "stateless": { - "type": "boolean", - "description": "Take action, regardless of state. Should be set to 'true' for MSS-G.", - "default": true, - "title": "Stateless" - }, - "next_hop": { - "type": "string", - "description": "When the action is 'redirect', this indicates the IPv4 next hop to redirect to.", - "title": "Next Hop" - } - }, - "required": [ - "application", - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Policies" - }, - "vrfs": { - "type": "array", - "description": "The name of the VRF that the segments and policies are defined in.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "segments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Segment name.", - "title": "Name" - }, - "definition": { - "type": "object", - "properties": { - "interfaces": { - "type": "array", - "description": "The names of the source interface e.g. Port-Channel1 - note that platform support is limited.", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Interfaces" - }, - "match_lists": { - "type": "array", - "description": "The set of lists that define the segment. These can be a mix of IPv4 and IPv6 prefix or match lists.", - "maxItems": 2, - "minItems": 1, - "items": { - "type": "object", - "properties": { - "address_family": { - "type": "string", - "description": "Indicate which address-family the match list belongs to e.g. ipv4 or ipv6.", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Address Family" - }, - "covered_prefix_list": { - "type": "string", - "description": "The name of the prefix-list. You can have a maximum of one per address-family. Mutually exclusive to the use of match_list. If both are configured prefix takes precedence.", - "title": "Covered Prefix List" - }, - "prefix": { - "type": "string", - "description": "The name of the match-list. You can have a maximum of one per address-family. Mutually exclusive to the use of covered_prefix_list. If both are configured prefix takes precedence.", - "title": "Prefix" - } - }, - "required": [ - "address_family" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Match Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Definition" - }, - "policies": { - "type": "array", - "description": "The policies controlling traffic into the segment.", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "The name of the source segment or 'forwarding-segments' for all segments.", - "title": "From" - }, - "policy": { - "type": "string", - "description": "The name of the policy to apply. The built-in policies are 'policy-forward-all' and 'policy-drop-all'.", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "from" - ] - }, - "title": "Policies" - }, - "fallback_policy": { - "type": "string", - "description": "Only supported on the R3 series platforms, this allows a per-segment default policy to be specified by name.", - "title": "Fallback Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Segments" - } - }, - "required": [ - "segments", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Segment Security" - }, - "router_service_insertion": { - "type": "object", - "description": "Configure network services inserted to data forwarding.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "connections": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Connection name.", - "title": "Name" - }, - "ethernet_interface": { - "type": "object", - "description": "Outgoing physical interface or subinterface to use for the connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", - "properties": { - "name": { - "type": "string", - "description": "e.g. Ethernet2 or Ethernet2/2.2", - "title": "Name" - }, - "next_hop": { - "type": "string", - "description": "Next-hop IPv4 address (without mask).", - "title": "Next Hop" - } - }, - "required": [ - "name", - "next_hop" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Interface" - }, - "tunnel_interface": { - "type": "object", - "description": "Outgoing tunnel interface(s) to use for this connection.\nIf both `ethernet_interface` and `tunnel_interface` are configured, `ethernet_interface` will be used.", - "properties": { - "primary": { - "type": "string", - "description": "e.g. Tunnel2", - "title": "Primary" - }, - "secondary": { - "type": "string", - "description": "e.g. Tunnel3", - "title": "Secondary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tunnel Interface" - }, - "monitor_connectivity_host": { - "type": "string", - "description": "Name of the host defined under `monitor_connectivity.hosts` used to derive the health of the connection.", - "title": "Monitor Connectivity Host" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Connections" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Service Insertion" - }, - "router_traffic_engineering": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "router_id": { - "type": "object", - "properties": { - "ipv4": { - "type": "string", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router ID" - }, - "segment_routing": { - "type": "object", - "properties": { - "colored_tunnel_rib": { - "type": "boolean", - "title": "Colored Tunnel Rib" - }, - "policy_endpoints": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "IPv4 or IPv6 address.", - "title": "Address" - }, - "colors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": { - "type": "integer", - "title": "Value" - }, - "binding_sid": { - "type": "integer", - "title": "Binding Sid" - }, - "description": { - "type": "string", - "title": "Description" - }, - "name": { - "type": "string", - "title": "Name" - }, - "sbfd_remote_discriminator": { - "type": "string", - "description": "IPv4 address or 32 bit integer.", - "title": "SBFD Remote Discriminator" - }, - "path_group": { - "type": "array", - "items": { - "type": "object", - "properties": { - "preference": { - "type": "integer", - "title": "Preference" - }, - "explicit_null": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "ipv4 ipv6", - "none" - ], - "title": "Explicit Null" - }, - "segment_list": { - "type": "array", - "items": { - "type": "object", - "properties": { - "label_stack": { - "type": "string", - "description": "Label Stack as string.\nExample: \"100 2000 30\"\n", - "title": "Label Stack" - }, - "weight": { - "type": "integer", - "title": "Weight" - }, - "index": { - "type": "integer", - "title": "Index" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Segment List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "value" - ] - }, - "title": "Colors" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Policy Endpoints" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Segment Routing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Router Traffic Engineering" - }, - "service_routing_configuration_bgp": { - "type": "object", - "properties": { - "no_equals_default": { - "type": "boolean", - "title": "No Equals Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Routing Configuration BGP" - }, - "service_routing_protocols_model": { - "type": "string", - "enum": [ - "multi-agent", - "ribd" - ], - "title": "Service Routing Protocols Model" - }, - "service_unsupported_transceiver": { - "type": "object", - "properties": { - "license_name": { - "type": "string", - "title": "License Name" - }, - "license_key": { - "type": "string", - "title": "License Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Unsupported Transceiver" - }, - "sflow": { - "type": "object", - "properties": { - "sample": { - "type": "integer", - "title": "Sample" - }, - "sample_input_subinterface": { - "type": "boolean", - "title": "Sample Input Subinterface" - }, - "sample_output_subinterface": { - "type": "boolean", - "title": "Sample Output Subinterface" - }, - "dangerous": { - "type": "boolean", - "title": "Dangerous" - }, - "polling_interval": { - "type": "integer", - "description": "Polling interval in seconds.", - "title": "Polling Interval" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "string", - "description": "Sflow Destination IP Address.", - "title": "Destination" - }, - "port": { - "type": "integer", - "description": "Port Number", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "destination" - ] - }, - "title": "Destinations" - }, - "source": { - "type": "string", - "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", - "title": "Source" - }, - "source_interface": { - "type": "string", - "description": "Source Interface.", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "string", - "description": "Sflow Destination IP Address.", - "title": "Destination" - }, - "port": { - "type": "integer", - "description": "Port Number.", - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "destination" - ] - }, - "title": "Destinations" - }, - "source": { - "type": "string", - "description": "Source IP Address.\n\"source\" and \"source_interface\" are mutually exclusive. If both are defined, \"source_interface\" takes precedence.\n", - "title": "Source" - }, - "source_interface": { - "type": "string", - "description": "Source Interface.", - "title": "Source Interface" - }, - "extensions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Extension Name.", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "description": "Enable or Disable Extension.", - "title": "Enabled" - } - }, - "required": [ - "enabled", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Extensions" - }, - "interface": { - "type": "object", - "properties": { - "disable": { - "type": "object", - "properties": { - "default": { - "type": "boolean", - "title": "Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Disable" - }, - "egress": { - "type": "object", - "properties": { - "enable_default": { - "type": "boolean", - "description": "Enable egress sFlow by default.\n", - "title": "Enable Default" - }, - "unmodified": { - "type": "boolean", - "description": "Enable egress sFlow unmodified.\nPlatform dependent feature.\n", - "title": "Unmodified" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Interface" - }, - "run": { - "type": "boolean", - "title": "Run" - }, - "hardware_acceleration": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "modules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Modules" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hardware Acceleration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "snmp_server": { - "type": "object", - "description": "SNMP settings.", - "properties": { - "engine_ids": { - "type": "object", - "properties": { - "local": { - "type": "string", - "description": "Engine ID in hexadecimal.\n", - "title": "Local" - }, - "remotes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Remote engine ID in hexadecimal.\n", - "title": "ID" - }, - "address": { - "type": "string", - "description": "Hostname or IP of remote engine.\n", - "title": "Address" - }, - "udp_port": { - "type": "integer", - "title": "UDP Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Remotes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Engine IDs" - }, - "contact": { - "type": "string", - "description": "SNMP contact.", - "title": "Contact" - }, - "location": { - "type": "string", - "description": "SNMP location.", - "title": "Location" - }, - "communities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community name.", - "title": "Name" - }, - "access": { - "type": "string", - "enum": [ - "ro", - "rw" - ], - "title": "Access" - }, - "access_list_ipv4": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv4" - }, - "access_list_ipv6": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv6" - }, - "view": { - "type": "string", - "title": "View" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Communities" - }, - "ipv4_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv4 Acls" - }, - "ipv6_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Acls" - }, - "local_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Local Interfaces" - }, - "views": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "SNMP view name.", - "title": "Name" - }, - "mib_family_name": { - "type": "string", - "title": "MIB Family Name" - }, - "included": { - "type": "boolean", - "title": "Included" - }, - "MIB_family_name": { - "type": "string", - "title": "MIB Family Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Views" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "authentication": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication" - }, - "read": { - "type": "string", - "description": "Read view.", - "title": "Read" - }, - "write": { - "type": "string", - "description": "Write view.", - "title": "Write" - }, - "notify": { - "type": "string", - "description": "Notify view.", - "title": "Notify" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Groups" - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Username.", - "title": "Name" - }, - "group": { - "type": "string", - "description": "Group name.", - "title": "Group" - }, - "remote_address": { - "type": "string", - "description": "Hostname or ip of remote engine.\nThe remote_address and udp_port are used for remote users.\n", - "title": "Remote Address" - }, - "udp_port": { - "type": "integer", - "description": "udp_port will not be used if no remote_address is configured.\n", - "title": "UDP Port" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "localized": { - "type": "string", - "description": "Engine ID in hexadecimal for localizing auth and/or priv.\n", - "title": "Localized" - }, - "auth": { - "type": "string", - "description": "Hash algorithm.\n", - "title": "Auth" - }, - "auth_passphrase": { - "type": "string", - "description": "Hashed authentication passphrase if localized is used else cleartext authentication passphrase.\n", - "title": "Auth Passphrase" - }, - "priv": { - "type": "string", - "description": "Encryption algorithm.\n", - "title": "Priv" - }, - "priv_passphrase": { - "type": "string", - "description": "Hashed privacy passphrase if localized is used else cleartext privacy passphrase.\n", - "title": "Priv Passphrase" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "version": { - "type": "string", - "enum": [ - "1", - "2c", - "3" - ], - "title": "Version" - }, - "community": { - "type": "string", - "description": "Community name.", - "title": "Community" - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "username": { - "type": "string", - "title": "Username" - }, - "authentication_level": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Hosts" - }, - "traps": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "default": false, - "description": "Enable or disable all snmp-traps.\n", - "title": "Enable" - }, - "snmp_traps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Snmp Traps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traps" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "enable": { - "type": "boolean", - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Snmp Server" - }, - "spanning_tree": { - "type": "object", - "properties": { - "root_super": { - "type": "boolean", - "title": "Root Super" - }, - "edge_port": { - "type": "object", - "properties": { - "bpdufilter_default": { - "type": "boolean", - "title": "Bpdufilter Default" - }, - "bpduguard_default": { - "type": "boolean", - "title": "Bpduguard Default" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Edge Port" - }, - "mode": { - "type": "string", - "enum": [ - "mstp", - "rstp", - "rapid-pvst", - "none" - ], - "title": "Mode" - }, - "bpduguard_rate_limit": { - "type": "object", - "properties": { - "default": { - "type": "boolean", - "title": "Default" - }, - "count": { - "type": "integer", - "description": "Maximum number of BPDUs per timer interval.", - "title": "Count" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Bpduguard Rate Limit" - }, - "rstp_priority": { - "type": "integer", - "title": "Rstp Priority" - }, - "mst": { - "type": "object", - "properties": { - "pvst_border": { - "type": "boolean", - "title": "Pvst Border" - }, - "configuration": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "revision": { - "type": "integer", - "description": "0-65535.", - "title": "Revision" - }, - "instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "Instance ID.", - "title": "ID" - }, - "vlans": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 15,16,17,18\n", - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Instances" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Configuration" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mst" - }, - "mst_instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Instance ID.", - "title": "ID" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Mst Instances" - }, - "no_spanning_tree_vlan": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", - "title": "No Spanning Tree VLAN" - }, - "rapid_pvst_instances": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "\"< vlan_id >, < vlan_id >-< vlan_id >\"\nExample: 105,202,505-506\n", - "title": "ID" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "Rapid Pvst Instances" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Spanning Tree" - }, - "standard_access_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Access-list Name.", - "title": "Name" - }, - "counters_per_entry": { - "type": "boolean", - "title": "Counters Per Entry" - }, - "sequence_numbers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "sequence": { - "type": "integer", - "description": "Sequence ID.", - "title": "Sequence" - }, - "action": { - "type": "string", - "description": "Action as string.\nExample: \"deny ip any any\"\n", - "title": "Action" - } - }, - "required": [ - "action", - "sequence" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Sequence Numbers" - } - }, - "required": [ - "sequence_numbers", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Standard Access Lists" - }, - "static_routes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "destination_address_prefix": { - "type": "string", - "description": "IPv4_network/Mask.", - "title": "Destination Address Prefix" - }, - "interface": { - "type": "string", - "title": "Interface" - }, - "gateway": { - "type": "string", - "description": "IPv4 Address.", - "title": "Gateway" - }, - "track_bfd": { - "type": "boolean", - "description": "Track next-hop using BFD.", - "title": "Track BFD" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - }, - "tag": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Tag" - }, - "name": { - "type": "string", - "description": "Description.", - "title": "Name" - }, - "metric": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Metric" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static Routes" - }, - "stun": { - "type": "object", - "description": "STUN configuration.", - "properties": { - "client": { - "type": "object", - "description": "STUN client settings.", - "properties": { - "server_profiles": { - "type": "array", - "description": "List of server profiles for the client.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "port": { - "type": "integer", - "description": "Destination port for the request STUN server (default - 3478).", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Server Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "server": { - "type": "object", - "description": "STUN server settings.", - "properties": { - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "local_interfaces": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Local Interfaces" - }, - "bindings_timeout": { - "type": "integer", - "description": "Timeout for bindings stored on STUN server in seconds.", - "minimum": 10, - "maximum": 7200, - "title": "Bindings Timeout" - }, - "ssl_profile": { - "type": "string", - "description": "SSL profile name.", - "title": "SSL Profile" - }, - "ssl_connection_lifetime": { - "type": "object", - "description": "SSL connection lifetime in minutes or hours.\nIf both are specified, minutes is given higher precedence.", - "properties": { - "minutes": { - "type": "integer", - "description": "SSL connection lifetime in minutes (default - 120).", - "minimum": 1, - "maximum": 1440, - "title": "Minutes" - }, - "hours": { - "type": "integer", - "description": "SSL connection lifetime in hours (default - 2).", - "minimum": 1, - "maximum": 24, - "title": "Hours" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SSL Connection Lifetime" - }, - "port": { - "type": "integer", - "description": "Listening port for STUN server (default - 3478).", - "minimum": 1, - "maximum": 65535, - "title": "Port" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Server" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "STUN" - }, - "switchport_default": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "routed", - "access" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "cos": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "COS" - }, - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "description": "VLAN ID.", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport Default" - }, - "switchport_port_security": { - "type": "object", - "properties": { - "mac_address": { - "type": "object", - "properties": { - "aging": { - "type": "boolean", - "title": "Aging" - }, - "moveable": { - "type": "boolean", - "title": "Moveable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address" - }, - "persistence_disabled": { - "type": "boolean", - "title": "Persistence Disabled" - }, - "violation_protect_chip_based": { - "type": "boolean", - "title": "Violation Protect Chip Based" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport Port Security" - }, - "sync_e": { - "type": "object", - "properties": { - "network_option": { - "type": "integer", - "minimum": 1, - "maximum": 2, - "title": "Network Option" - } - }, - "required": [ - "network_option" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "system": { - "type": "object", - "properties": { - "control_plane": { - "type": "object", - "properties": { - "tcp_mss": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment size.", - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment size.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss" - }, - "ipv4_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "acl_name": { - "type": "string", - "title": "Acl Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "acl_name" - ] - }, - "title": "IPv4 Access Groups" - }, - "ipv6_access_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "acl_name": { - "type": "string", - "title": "Acl Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "acl_name" - ] - }, - "title": "IPv6 Access Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Plane" - }, - "l1": { - "type": "object", - "properties": { - "unsupported_speed_action": { - "type": "string", - "enum": [ - "error", - "warn" - ], - "title": "Unsupported Speed Action" - }, - "unsupported_error_correction_action": { - "type": "string", - "enum": [ - "error", - "warn" - ], - "title": "Unsupported Error Correction Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "System" - }, - "tacacs_servers": { - "type": "object", - "properties": { - "timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "key": { - "type": "string", - "description": "Encrypted key.", - "title": "Key" - }, - "key_type": { - "type": "string", - "enum": [ - "0", - "7", - "8a" - ], - "default": "7", - "title": "Key Type" - }, - "single_connection": { - "type": "boolean", - "title": "Single Connection" - }, - "timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "minimum": 1, - "maximum": 1000, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Hosts" - }, - "policy_unknown_mandatory_attribute_ignore": { - "type": "boolean", - "title": "Policy Unknown Mandatory Attribute Ignore" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tacacs Servers" - }, - "tap_aggregation": { - "type": "object", - "properties": { - "mode": { - "type": "object", - "properties": { - "exclusive": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "profile": { - "description": "Profile Name.", - "type": "string", - "title": "Profile" - }, - "no_errdisable": { - "type": "array", - "items": { - "type": "string", - "description": "Interface name e.g Ethernet1, Port-Channel1." - }, - "title": "No Errdisable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Exclusive" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Mode" - }, - "encapsulation_dot1br_strip": { - "type": "boolean", - "title": "Encapsulation dot1br Strip" - }, - "encapsulation_vn_tag_strip": { - "type": "boolean", - "title": "Encapsulation VN Tag Strip" - }, - "protocol_lldp_trap": { - "type": "boolean", - "title": "Protocol LLDP Trap" - }, - "truncation_size": { - "type": "integer", - "description": "Allowed truncation_size values vary depending on the platform.\n", - "title": "Truncation Size" - }, - "mac": { - "type": "object", - "properties": { - "timestamp": { - "type": "object", - "description": "mac.timestamp.replace_source_mac and mac.timestamp.header.format are mutually exclsuive. If both are defined, replace_source_mac takes precedence.\n", - "properties": { - "replace_source_mac": { - "type": "boolean", - "title": "Replace Source MAC" - }, - "header": { - "type": "object", - "properties": { - "format": { - "type": "string", - "enum": [ - "48-bit", - "64-bit" - ], - "title": "Format" - }, - "eth_type": { - "description": "EtherType.", - "type": "integer", - "title": "Eth Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Header" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timestamp" - }, - "fcs_append": { - "type": "boolean", - "description": "mac.fcs_append and mac.fcs_error are mutually exclusive. If both are defined, mac.fcs_append takes precedence.\n", - "title": "FCS Append" - }, - "fcs_error": { - "type": "string", - "enum": [ - "correct", - "discard", - "pass-through" - ], - "title": "FCS Error" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tap Aggregation" - }, - "tcam_profile": { - "type": "object", - "title": "Hardware TCAM Profiles", - "properties": { - "system": { - "type": "string", - "description": "TCAM profile name to activate.\n", - "title": "System" - }, - "profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tcam-Profile Name.", - "title": "Name" - }, - "config": { - "type": "string", - "description": "TCAM Profile Config. Since these can be very long, it is often a good idea to import the config from a file.\nExample: \"{{ lookup('file', 'TCAM_TRAFFIC_POLICY.conf') }}\"\n", - "title": "Config" - }, - "source": { - "type": "string", - "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.\n", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Profiles" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "terminal": { - "type": "object", - "title": "Terminal Settings", - "properties": { - "length": { - "type": "integer", - "minimum": 0, - "maximum": 32767, - "title": "Length" - }, - "width": { - "type": "integer", - "minimum": 10, - "maximum": 32767, - "title": "Width" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "trackers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of tracker object.", - "title": "Name" - }, - "interface": { - "type": "string", - "description": "Name of tracked interface.", - "title": "Interface" - }, - "tracked_property": { - "type": "string", - "default": "line-protocol", - "description": "Property to track.", - "title": "Tracked Property" - } - }, - "required": [ - "interface", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Trackers" - }, - "traffic_policies": { - "type": "object", - "properties": { - "options": { - "type": "object", - "properties": { - "counter_per_interface": { - "type": "boolean", - "title": "Counter Per Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Options" - }, - "field_sets": { - "type": "object", - "properties": { - "ipv4": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 Prefix Field Set Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 Prefix." - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv4" - }, - "ipv6": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 Prefix Field Set Name.", - "title": "Name" - }, - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IPv6 Prefix." - }, - "title": "Prefixes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "IPv6" - }, - "ports": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "L4 Port Field Set Name.", - "title": "Name" - }, - "port_range": { - "type": "string", - "description": "Example: '10,20,80,440-450'", - "title": "Port Range" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Ports" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Field Sets" - }, - "policies": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Traffic Policy Name.", - "title": "Name" - }, - "matches": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Traffic Policy Item.", - "title": "Name" - }, - "type": { - "type": "string", - "enum": [ - "ipv4", - "ipv6" - ], - "title": "Type" - }, - "source": { - "type": "object", - "properties": { - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or prefix." - }, - "title": "Prefixes" - }, - "prefix_lists": { - "type": "array", - "description": "Field-set prefix lists.", - "items": { - "type": "string" - }, - "title": "Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - }, - "destination": { - "type": "object", - "properties": { - "prefixes": { - "type": "array", - "items": { - "type": "string", - "description": "IP address or prefix." - }, - "title": "Prefixes" - }, - "prefix_lists": { - "type": "array", - "description": "Field-set prefix lists.", - "items": { - "type": "string" - }, - "title": "Prefix Lists" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "ttl": { - "type": "string", - "description": "TTL range.", - "title": "TTL" - }, - "fragment": { - "type": "object", - "description": "The 'fragment' command is not supported when 'source port'\nor 'destination port' command is configured.\n", - "properties": { - "offset": { - "type": "string", - "description": "Fragment offset range.", - "title": "Offset" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Fragment" - }, - "protocols": { - "type": "array", - "items": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "title": "Protocol" - }, - "src_port": { - "type": "string", - "description": "Port range.", - "title": "Src Port" - }, - "dst_port": { - "type": "string", - "description": "Port range.", - "title": "Dst Port" - }, - "src_field": { - "type": "string", - "description": "L4 port range field set.", - "title": "Src Field" - }, - "dst_field": { - "type": "string", - "description": "L4 port range field set.", - "title": "Dst Field" - }, - "flags": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "established", - "initial" - ] - }, - "title": "Flags" - }, - "icmp_type": { - "type": "array", - "items": { - "type": "string" - }, - "title": "ICMP Type" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "protocol" - ] - }, - "title": "Protocols" - }, - "actions": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Actions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Matches" - }, - "default_actions": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "dscp": { - "type": "integer", - "title": "DSCP" - }, - "traffic_class": { - "type": "integer", - "description": "Traffic class ID.", - "title": "Traffic Class" - }, - "count": { - "type": "string", - "description": "Counter name.", - "title": "Count" - }, - "drop": { - "type": "boolean", - "title": "Drop" - }, - "log": { - "type": "boolean", - "description": "Only supported when action is set to drop.", - "title": "Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Actions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policies" - }, - "transceiver_qsfp_default_mode_4x10": { - "type": "boolean", - "default": true, - "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.\n", - "title": "Transceiver Qsfp Default Mode 4X10" - }, - "tunnel_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tunnel Interface Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "vrf": { - "type": "string", - "description": "VRF Name.", - "title": "VRF" - }, - "underlay_vrf": { - "type": "string", - "description": "Underlay VRF Name.", - "title": "Underlay VRF" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "access_group_in": { - "description": "IPv4 ACL Name for ingress.", - "type": "string", - "title": "Access Group In" - }, - "access_group_out": { - "description": "IPv4 ACL Name for egress.", - "type": "string", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "description": "IPv6 ACL Name for ingress.", - "type": "string", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "description": "IPv6 ACL Name for egress.", - "type": "string", - "title": "IPv6 Access Group Out" - }, - "tcp_mss_ceiling": { - "type": "object", - "properties": { - "ipv4": { - "type": "integer", - "description": "Segment Size for IPv4.", - "minimum": 64, - "maximum": 65495, - "title": "IPv4" - }, - "ipv6": { - "type": "integer", - "description": "Segment Size for IPv6.", - "minimum": 64, - "maximum": 65475, - "title": "IPv6" - }, - "direction": { - "type": "string", - "enum": [ - "ingress", - "egress" - ], - "description": "Optional direction ('ingress', 'egress') for tcp mss ceiling.\n", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "tunnel_mode": { - "type": "string", - "enum": [ - "gre", - "ipsec" - ], - "description": "Tunnel encapsulation method.\n`gre`: Generic route encapsulation protocol,\n`ipsec`: IPsec-over-IP encapsulation.", - "title": "Tunnel Mode" - }, - "source_interface": { - "type": "string", - "description": "Tunnel Source Interface Name.", - "title": "Source Interface" - }, - "destination": { - "type": "string", - "description": "IPv4 or IPv6 Address Tunnel Destination.", - "title": "Destination" - }, - "path_mtu_discovery": { - "type": "boolean", - "description": "Enable Path MTU Discovery On Tunnel.", - "title": "Path MTU Discovery" - }, - "ipsec_profile": { - "type": "string", - "description": "Used only when `tunnel_mode` is set to `ipsec`.\nIt must target a defined IPsec profile.", - "title": "Ipsec Profile" - }, - "nat_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Nat Profile" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tunnel Interfaces" - }, - "virtual_source_nat_vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "ip_address": { - "type": "string", - "description": "IPv4 Address.", - "title": "IP Address" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 Address.", - "title": "IPv6 Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Virtual Source Nat VRFs" - }, - "vlan_interfaces": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VLAN interface name like \"Vlan123\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "arp_aging_timeout": { - "type": "integer", - "description": "In seconds.", - "minimum": 1, - "maximum": 65535, - "title": "ARP Aging Timeout" - }, - "arp_cache_dynamic_capacity": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "ARP Cache Dynamic Capacity" - }, - "arp_gratuitous_accept": { - "type": "boolean", - "title": "ARP Gratuitous Accept" - }, - "arp_monitor_mac_address": { - "type": "boolean", - "title": "ARP Monitor MAC Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ip_directed_broadcast": { - "type": "boolean", - "title": "IP Directed Broadcast" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 address or IPv4_address/Mask." - }, - "title": "IP Virtual Router Addresses" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address Virtual" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_igmp": { - "type": "boolean", - "title": "IP IGMP" - }, - "ip_igmp_version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "title": "IP IGMP Version" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "ip_helpers": { - "type": "array", - "description": "List of DHCP servers.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IP address or hostname of DHCP server.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface used as source for forwarded DHCP packets.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF where DHCP server can be reached.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "IP DHCP Relay All Subnets" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_virtual_router_address": { - "type": "string", - "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", - "deprecated": true, - "title": "IPv6 Virtual Router Address" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", - "items": { - "type": "string", - "description": "IPv6 address or IPv6_address/Mask." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_other_config_flag": { - "type": "boolean", - "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", - "title": "IPv6 ND Other Config Flag" - }, - "ipv6_nd_cache": { - "type": "object", - "description": "IPv6 neighbor cache options.", - "properties": { - "dynamic_capacity": { - "type": "integer", - "description": "Capacity of dynamic cache entries.", - "minimum": 0, - "maximum": 4294967295, - "title": "Dynamic Capacity" - }, - "expire": { - "type": "integer", - "description": "Cache entries expirery in seconds.", - "minimum": 1, - "maximum": 65535, - "title": "Expire" - }, - "refresh_always": { - "type": "boolean", - "description": "Force refresh on cache expiry.", - "title": "Refresh Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 ND Cache" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "ipv6_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "IPv6 DHCP Relay All Subnets" - }, - "access_group_in": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group Out" - }, - "multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password used for simple authentication.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "description": "Keys used for message-digest authentication.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "no_autostate": { - "type": "boolean", - "title": "No Autostate" - }, - "vrrp_ids": { - "type": "array", - "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "vrrp": { - "type": "object", - "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", - "deprecated": true, - "properties": { - "virtual_router": { - "type": "string", - "description": "Virtual Router ID.", - "title": "Virtual Router" - }, - "priority": { - "type": "integer", - "description": "Instance priority.", - "title": "Priority" - }, - "advertisement_interval": { - "type": "integer", - "title": "Advertisement Interval" - }, - "preempt_delay_minimum": { - "type": "integer", - "title": "Preempt Delay Minimum" - }, - "ipv4": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VRRP" - }, - "ip_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Attached Host Route Export" - }, - "ipv6_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Administrative distance for generated routes.", - "title": "Distance" - }, - "prefix_length": { - "type": "integer", - "minimum": 0, - "maximum": 128, - "description": "Prefix length for generated routes.", - "title": "Prefix Length" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Attached Host Route Export" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Minimum RX hold time in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Name of policy-map used for policy based routing.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of VLANs as string.", - "title": "PVLAN Mapping" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Key only used for documentation or validation purposes.", - "title": "Tags" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VLAN Interfaces" - }, - "vlan_internal_order": { - "type": "object", - "properties": { - "allocation": { - "type": "string", - "enum": [ - "ascending", - "descending" - ], - "title": "Allocation" - }, - "range": { - "type": "object", - "properties": { - "beginning": { - "type": "integer", - "minimum": 2, - "maximum": 4094, - "description": "First VLAN ID.", - "title": "Beginning" - }, - "ending": { - "type": "integer", - "minimum": 2, - "maximum": 4094, - "description": "Last VLAN ID.", - "title": "Ending" - } - }, - "required": [ - "beginning", - "ending" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Range" - } - }, - "required": [ - "allocation", - "range" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VLAN Internal Order" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "name": { - "type": "string", - "description": "VLAN Name.", - "title": "Name" - }, - "state": { - "type": "string", - "enum": [ - "active", - "suspend" - ], - "title": "State" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Trunk Group Name." - }, - "title": "Trunk Groups" - }, - "private_vlan": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "community", - "isolated" - ], - "title": "Type" - }, - "primary_vlan": { - "type": "integer", - "description": "Primary VLAN ID.", - "title": "Primary VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Private VLAN" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vmtracer_sessions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Vmtracer Session Name.", - "title": "Name" - }, - "url": { - "type": "string", - "title": "URL" - }, - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "description": "Type 7 Password Hash.", - "title": "Password" - }, - "autovlan_disable": { - "type": "boolean", - "title": "Autovlan Disable" - }, - "source_interface": { - "type": "string", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VMTracer Sessions" - }, - "vrfs": { - "type": "array", - "description": "These keys are ignored if the name of the vrf is 'default'.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "ip_routing": { - "type": "boolean", - "title": "IP Routing" - }, - "ipv6_routing": { - "type": "boolean", - "title": "IPv6 Routing" - }, - "ip_routing_ipv6_interfaces": { - "type": "boolean", - "title": "IP Routing IPv6 Interfaces" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "vxlan_interface": { - "type": "object", - "properties": { - "Vxlan1": { - "type": "object", - "properties": { - "description": { - "type": "string", - "title": "Description" - }, - "vxlan": { - "type": "object", - "properties": { - "source_interface": { - "type": "string", - "description": "Source Interface Name.", - "title": "Source Interface" - }, - "multicast": { - "type": "object", - "properties": { - "headend_replication": { - "type": "boolean", - "title": "Headend Replication" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "controller_client": { - "type": "object", - "description": "Client to CVX Controllers.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Controller Client" - }, - "mlag_source_interface": { - "type": "string", - "title": "MLAG Source Interface" - }, - "udp_port": { - "type": "integer", - "title": "UDP Port" - }, - "vtep_to_vtep_bridging": { - "type": "boolean", - "description": "Enable bridging between different VTEPs in vxlan overlay.", - "title": "Vtep To Vtep Bridging" - }, - "virtual_router_encapsulation_mac_address": { - "type": "string", - "description": "\"mlag-system-id\" or ethernet_address (H.H.H).\n", - "title": "Virtual Router Encapsulation MAC Address" - }, - "bfd_vtep_evpn": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "prefix_list": { - "type": "string", - "title": "Prefix List" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD Vtep EVPN" - }, - "qos": { - "type": "object", - "description": "For the Traffic Class to be derived based on the outer DSCP field of the incoming VxLan packet, the core ports must be in \"DSCP Trust\" mode.\n!!!Warning, only few hardware types with software version >= 4.26.0 support the below knobs to configure Vxlan DSCP mapping.\n", - "properties": { - "dscp_propagation_encapsulation": { - "type": "boolean", - "title": "DSCP Propagation Encapsulation" - }, - "ecn_propagation": { - "type": "boolean", - "description": "Enable copying the ECN marking to/from encapsulated packets.\n", - "title": "Ecn Propagation" - }, - "map_dscp_to_traffic_class_decapsulation": { - "type": "boolean", - "title": "Map DSCP To Traffic Class Decapsulation" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VLAN ID.", - "title": "ID" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "multicast_group": { - "type": "string", - "description": "IP Multicast Group Address.", - "title": "Multicast Group" - }, - "flood_vteps": { - "type": "array", - "items": { - "type": "string", - "description": "Remote VTEP IP Address." - }, - "title": "Flood Vteps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VLANs" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF Name.", - "title": "Name" - }, - "vni": { - "type": "integer", - "title": "Vni" - }, - "multicast_group": { - "type": "string", - "description": "IP Multicast Group Address.", - "title": "Multicast Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "flood_vteps": { - "type": "array", - "items": { - "type": "string", - "description": "Remote VTEP IP Address." - }, - "title": "Flood Vteps" - }, - "flood_vtep_learned_data_plane": { - "type": "boolean", - "title": "Flood Vtep Learned Data Plane" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN" - }, - "eos_cli": { - "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.\n", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Vxlan1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VxLAN Interface" - } - }, - "additionalProperties": true, - "title": "Structured Config" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the root level of the final EOS configuration.", - "title": "Raw EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "default": [ - { - "platforms": [ - "default" - ], - "feature_support": { - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "7050X3" - ], - "feature_support": { - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - }, - "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072" - }, - { - "platforms": [ - "720XP" - ], - "feature_support": { - "poe": true, - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - }, - "trident_forwarding_table_partition": "flexible exact-match 16000 l2-shared 18000 l3-shared 22000" - }, - { - "platforms": [ - "750", - "755", - "758" - ], - "management_interface": "Management0", - "feature_support": { - "poe": true, - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "720DP", - "722XP", - "710P" - ], - "feature_support": { - "poe": true, - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "7010TX" - ], - "feature_support": { - "queue_monitor_length_notify": false, - "per_interface_mtu": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "7280R", - "7280R2", - "7020R" - ], - "lag_hardware_only": true, - "reload_delay": { - "mlag": 900, - "non_mlag": 1020 - }, - "tcam_profile": "vxlan-routing" - }, - { - "platforms": [ - "7280R3" - ], - "reload_delay": { - "mlag": 900, - "non_mlag": 1020 - } - }, - { - "platforms": [ - "7500R", - "7500R2" - ], - "lag_hardware_only": true, - "management_interface": "Management0", - "reload_delay": { - "mlag": 900, - "non_mlag": 1020 - }, - "tcam_profile": "vxlan-routing" - }, - { - "platforms": [ - "7500R3", - "7800R3" - ], - "management_interface": "Management0", - "reload_delay": { - "mlag": 900, - "non_mlag": 1020 - } - }, - { - "platforms": [ - "7358X4" - ], - "management_interface": "Management1/1", - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - }, - "feature_support": { - "queue_monitor_length_notify": false, - "interface_storm_control": true, - "bgp_update_wait_for_convergence": true, - "bgp_update_wait_install": false - } - }, - { - "platforms": [ - "7368X4" - ], - "management_interface": "Management0", - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "7300X3" - ], - "management_interface": "Management0", - "reload_delay": { - "mlag": 1200, - "non_mlag": 1320 - }, - "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072" - }, - { - "platforms": [ - "VEOS", - "VEOS-LAB", - "vEOS", - "vEOS-lab" - ], - "feature_support": { - "bgp_update_wait_for_convergence": false, - "bgp_update_wait_install": false, - "interface_storm_control": false, - "queue_monitor_length_notify": false - }, - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "CEOS", - "cEOS", - "ceos", - "cEOSLab" - ], - "feature_support": { - "bgp_update_wait_for_convergence": false, - "bgp_update_wait_install": false, - "interface_storm_control": false, - "queue_monitor_length_notify": false - }, - "management_interface": "Management0", - "reload_delay": { - "mlag": 300, - "non_mlag": 330 - } - }, - { - "platforms": [ - "AWE-5310", - "AWE-5510", - "AWE-7250R", - "AWE-7230R" - ], - "feature_support": { - "bgp_update_wait_for_convergence": true, - "bgp_update_wait_install": false, - "interface_storm_control": false, - "queue_monitor_length_notify": false - }, - "management_interface": "Management1/1" - }, - { - "platforms": [ - "AWE-7220R" - ], - "feature_support": { - "bgp_update_wait_for_convergence": true, - "bgp_update_wait_install": false, - "interface_storm_control": false, - "queue_monitor_length_notify": false, - "poe": true - }, - "management_interface": "Management1" - } - ], - "title": "Platform Settings" - }, - "platform_speed_groups": { - "type": "array", - "description": "Set Hardware Speed Groups per Platform.", - "items": { - "type": "object", - "properties": { - "platform": { - "type": "string", - "title": "Platform" - }, - "speeds": { - "type": "array", - "items": { - "type": "object", - "properties": { - "speed": { - "type": "string", - "title": "Speed" - }, - "speed_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Speed Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "speed" - ] - }, - "title": "Speeds" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "platform" - ] - }, - "title": "Platform Speed Groups" - }, - "pod_name": { - "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- VRF Loopbacks: `vtep_diagnostic.loopback_ip_pools.pod` (Required)\n\nRecommended to be common between Spines and Leafs within a POD (One l3ls topology).\n", - "type": "string", - "title": "Pod Name" - }, - "port_profiles": { - "type": "array", - "description": "Optional profiles to share common settings for connected_endpoints and/or network_ports.\nKeys are the same used under endpoints adapters. Keys defined under endpoints adapters take precedence.\n", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Port profile name.", - "title": "Profile" - }, - "parent_profile": { - "type": "string", - "description": "Parent profile is optional.\nPort_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile).\n", - "title": "Parent Profile" - }, - "speed": { - "type": "string", - "description": "Set adapter speed in the format `` or `forced ` or `auto `.\nIf not specified speed will be auto.\n", - "title": "Speed" - }, - "description": { - "type": "string", - "description": "By default the description is built leveraging `_`.\nWhen set this key will override the default value on the physical ports.\n", - "title": "Description" - }, - "enabled": { - "type": "boolean", - "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n", - "default": true, - "title": "Enabled" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "description": "Interface mode.", - "title": "Mode" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "native_vlan": { - "type": "integer", - "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n", - "minimum": 1, - "maximum": 4094, - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.", - "title": "Native VLAN Tag" - }, - "phone_vlan": { - "type": "integer", - "description": "Phone VLAN for a mode `trunk phone` port.\nRequires `mode: trunk phone` to be set.", - "minimum": 1, - "maximum": 4094, - "title": "Phone VLAN" - }, - "phone_trunk_mode": { - "type": "string", - "enum": [ - "tagged", - "untagged", - "tagged phone", - "untagged phone" - ], - "description": "Specify if the phone traffic is tagged or untagged.\nIf both data and phone traffic are untagged, MAC-Based VLAN Assignment (MBVA) is used, if supported by the model of switch.", - "title": "Phone Trunk Mode" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n", - "title": "Trunk Groups" - }, - "vlans": { - "type": "string", - "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.", - "title": "VLANs" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "received", - "send", - "on" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "qos_profile": { - "type": "string", - "description": "QOS profile name.", - "title": "QOS Profile" - }, - "ptp": { - "type": "object", - "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "title": "Enabled" - }, - "endpoint_role": { - "type": "string", - "default": "follower", - "enum": [ - "bmca", - "default", - "follower" - ], - "title": "Endpoint Role" - }, - "profile": { - "type": "string", - "default": "aes67-r16-2016", - "enum": [ - "aes67", - "aes67-r16-2016", - "smpte2059-2" - ], - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "sflow": { - "type": "boolean", - "description": "Configures sFlow on the interface. Overrides `fabric_sflow.endpoints` setting.", - "title": "Sflow" - }, - "flow_tracking": { - "type": "object", - "description": "Configures flow-tracking on the interface. Overrides `fabric_flow_tracking.endpoints` setting.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Flow tracker name as defined in flow_tracking_settings.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracking" - }, - "link_tracking": { - "type": "object", - "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "name": { - "type": "string", - "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Tracking" - }, - "dot1x": { - "type": "object", - "description": "802.1x", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Range 60-4294967295 or \"server\".", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "poe": { - "type": "object", - "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "storm_control": { - "type": "object", - "description": "Storm control settings applied on port toward the endpoint.", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "enum": [ - "percent", - "pps" - ], - "default": "percent", - "description": "Optional variable and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "monitor_sessions": { - "type": "array", - "description": "Used to define switchports as source or destination for monitoring sessions.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Session name.", - "title": "Name" - }, - "role": { - "type": "string", - "enum": [ - "source", - "destination" - ], - "title": "Role" - }, - "source_settings": { - "type": "object", - "properties": { - "direction": { - "type": "string", - "enum": [ - "rx", - "tx", - "both" - ], - "title": "Direction" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL name.", - "type": "string", - "title": "Name" - }, - "priority": { - "type": "integer", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Settings" - }, - "session_settings": { - "type": "object", - "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n", - "properties": { - "encapsulation_gre_metadata_tx": { - "type": "boolean", - "title": "Encapsulation Gre Metadata TX" - }, - "header_remove_size": { - "type": "integer", - "description": "Number of bytes to remove from header.", - "title": "Header Remove Size" - }, - "access_group": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ip", - "ipv6", - "mac" - ], - "title": "Type" - }, - "name": { - "description": "ACL name.", - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access Group" - }, - "rate_limit_per_ingress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Ingress Chip" - }, - "rate_limit_per_egress_chip": { - "type": "string", - "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n", - "title": "Rate Limit Per Egress Chip" - }, - "sample": { - "type": "integer", - "title": "Sample" - }, - "truncate": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "size": { - "type": "integer", - "description": "Size in bytes.", - "title": "Size" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Truncate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Session Settings" - } - }, - "required": [ - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Monitor Sessions" - }, - "ethernet_segment": { - "type": "object", - "description": "Settings for all or single-active EVPN multihoming.", - "properties": { - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n", - "title": "Short Esi" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n", - "title": "Redundancy" - }, - "designated_forwarder_algorithm": { - "type": "string", - "enum": [ - "auto", - "modulus", - "preference" - ], - "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n", - "title": "Designated Forwarder Algorithm" - }, - "designated_forwarder_preferences": { - "type": "array", - "description": "Manual preference as described above, required only for preference algorithm.", - "items": { - "type": "integer" - }, - "title": "Designated Forwarder Preferences" - }, - "dont_preempt": { - "type": "boolean", - "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.", - "title": "Dont Preempt" - } - }, - "required": [ - "short_esi" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ethernet Segment" - }, - "port_channel": { - "type": "object", - "description": "Used for port-channel adapter.", - "properties": { - "mode": { - "type": "string", - "description": "Port-Channel Mode.", - "enum": [ - "active", - "passive", - "on" - ], - "title": "Mode" - }, - "channel_id": { - "type": "integer", - "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n", - "title": "Channel ID" - }, - "description": { - "type": "string", - "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n", - "title": "Description" - }, - "enabled": { - "type": "boolean", - "default": true, - "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n", - "title": "Enabled" - }, - "ptp_mpass": { - "type": "boolean", - "default": false, - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "PTP Mpass" - }, - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.", - "deprecated": true, - "title": "Short Esi" - }, - "lacp_fallback": { - "type": "object", - "description": "LACP fallback configuration.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "static", - "individual" - ], - "description": "Either static or individual mode is supported.\nIf the mode is set to \"individual\" the \"individual.profile\" setting must be defined.\n", - "title": "Mode" - }, - "individual": { - "type": "object", - "description": "Define parameters for port-channel member interfaces. Applies only if LACP fallback is set to \"individual\".", - "properties": { - "profile": { - "type": "string", - "description": "Port-profile name to inherit configuration.", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Individual" - }, - "timeout": { - "type": "integer", - "description": "Timeout in seconds. EOS default is 90 seconds.", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Fallback" - }, - "lacp_timer": { - "type": "object", - "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".", - "properties": { - "mode": { - "type": "string", - "enum": [ - "normal", - "fast" - ], - "description": "LACP mode for interface members.", - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.", - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "subinterfaces": { - "type": "array", - "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n", - "items": { - "type": "object", - "properties": { - "number": { - "type": "integer", - "description": "Subinterface number.", - "title": "Number" - }, - "short_esi": { - "type": "string", - "description": "In format xxxx:xxxx:xxxx or \"auto\".\nRequired for multihomed port-channels with subinterfaces.\n", - "title": "Short Esi" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "description": "VLAN ID to bridge.\nDefault is subinterface number.\n", - "title": "VLAN ID" - }, - "encapsulation_vlan": { - "type": "object", - "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n", - "properties": { - "client_dot1q": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Client Dot1Q" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Subinterfaces" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulation are all optional, and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "native_vlan": { - "type": "integer", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "default": false, - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "untagged" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "mlag": { - "type": "integer", - "description": "MLAG ID.", - "minimum": 1, - "maximum": 2000, - "title": "MLAG" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "lacp_fallback_timeout": { - "type": "integer", - "description": "Timeout in seconds.", - "default": 90, - "minimum": 0, - "maximum": 300, - "title": "LACP Fallback Timeout" - }, - "lacp_fallback_mode": { - "type": "string", - "enum": [ - "individual", - "static" - ], - "title": "LACP Fallback Mode" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - }, - "neighbor": { - "type": "string", - "description": "IPv4 or IPv6 address. When the Port-channel is a L2 interface, a local L3 BFD address (router_bfd.local_address) has to be defined globally on the switch.", - "title": "Neighbor" - }, - "per_link": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "rfc_7130": { - "type": "boolean", - "title": "Rfc 7130" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Per Link" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "default": false, - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "esi": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.", - "deprecated": true, - "title": "Esi" - }, - "rt": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.", - "deprecated": true, - "title": "Rt" - }, - "lacp_id": { - "type": "string", - "description": "LACP ID with format xxxx.xxxx.xxxx.", - "title": "LACP ID" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - }, - "mpass": { - "type": "boolean", - "description": "When MPASS is enabled on an MLAG port-channel, MLAG peers coordinate to function as a single PTP logical device.\nArista PTP enabled devices always place PTP messages on the same physical link within the port-channel.\nHence, MPASS is needed only on MLAG port-channels connected to non-Arista devices.", - "title": "Mpass" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask.", - "title": "IP Address" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6 address/mask.", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Channel" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "load_interval": { - "type": "integer", - "minimum": 0, - "maximum": 600, - "description": "Interval in seconds for updating interface counters.", - "title": "Load Interval" - }, - "speed": { - "type": "string", - "description": "Speed should be set in the format `` or `forced ` or `auto `.", - "title": "Speed" - }, - "mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "title": "MTU" - }, - "l2_mtu": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI.\n", - "title": "L2 MTU" - }, - "l2_mru": { - "type": "integer", - "minimum": 68, - "maximum": 65535, - "description": "\"l2_mru\" should only be defined for platforms supporting the \"l2 mru\" CLI.\n", - "title": "L2 MRU" - }, - "vlans": { - "type": "string", - "description": "List of switchport vlans as string.\nFor a trunk port this would be a range like \"1-200,300\".\nFor an access port this would be a single vlan \"123\".\n", - "title": "VLANs" - }, - "native_vlan": { - "type": "integer", - "title": "Native VLAN" - }, - "native_vlan_tag": { - "type": "boolean", - "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence.", - "title": "Native VLAN Tag" - }, - "mode": { - "type": "string", - "enum": [ - "access", - "dot1q-tunnel", - "trunk", - "trunk phone" - ], - "title": "Mode" - }, - "phone": { - "type": "object", - "properties": { - "trunk": { - "type": "string", - "enum": [ - "tagged", - "tagged phone", - "untagged", - "untagged phone" - ], - "title": "Trunk" - }, - "vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Phone" - }, - "l2_protocol": { - "type": "object", - "properties": { - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "Vlan tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "forwarding_profile": { - "type": "string", - "description": "L2 protocol forwarding profile.", - "title": "Forwarding Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "L2 Protocol" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "enum": [ - "routed", - "switched", - "l3dot1q", - "l2dot1q", - "port-channel-member" - ], - "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n", - "title": "Type" - }, - "snmp_trap_link_change": { - "type": "boolean", - "title": "Snmp Trap Link Change" - }, - "address_locking": { - "type": "object", - "properties": { - "ipv4": { - "type": "boolean", - "description": "Enable address locking for IPv4.", - "title": "IPv4" - }, - "ipv6": { - "type": "boolean", - "description": "Enable address locking for IPv6.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Address Locking" - }, - "flowcontrol": { - "type": "object", - "properties": { - "received": { - "type": "string", - "enum": [ - "desired", - "on", - "off" - ], - "title": "Received" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flowcontrol" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "flow_tracker": { - "type": "object", - "properties": { - "sampled": { - "type": "string", - "description": "Sampled flow tracker name.", - "title": "Sampled" - }, - "hardware": { - "type": "string", - "description": "Hardware flow tracker name.", - "title": "Hardware" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Flow Tracker" - }, - "error_correction_encoding": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - }, - "fire_code": { - "type": "boolean", - "title": "Fire Code" - }, - "reed_solomon": { - "type": "boolean", - "title": "Reed Solomon" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Error Correction Encoding" - }, - "link_tracking_groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "direction": { - "type": "string", - "enum": [ - "upstream", - "downstream" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Link Tracking Groups" - }, - "evpn_ethernet_segment": { - "type": "object", - "properties": { - "identifier": { - "type": "string", - "description": "EVPN Ethernet Segment Identifier (Type 1 format).", - "title": "Identifier" - }, - "redundancy": { - "type": "string", - "enum": [ - "all-active", - "single-active" - ], - "title": "Redundancy" - }, - "designated_forwarder_election": { - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "enum": [ - "modulus", - "preference" - ], - "title": "Algorithm" - }, - "preference_value": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "description": "Preference_value is only used when \"algorithm\" is \"preference\".", - "title": "Preference Value" - }, - "dont_preempt": { - "type": "boolean", - "description": "Dont_preempt is only used when \"algorithm\" is \"preference\".", - "title": "Dont Preempt" - }, - "hold_time": { - "type": "integer", - "title": "Hold Time" - }, - "subsequent_hold_time": { - "type": "integer", - "title": "Subsequent Hold Time" - }, - "candidate_reachability_required": { - "type": "boolean", - "title": "Candidate Reachability Required" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Designated Forwarder Election" - }, - "mpls": { - "type": "object", - "properties": { - "shared_index": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "title": "Shared Index" - }, - "tunnel_flood_filter_time": { - "type": "integer", - "title": "Tunnel Flood Filter Time" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "route_target": { - "type": "string", - "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN Ethernet Segment" - }, - "encapsulation_dot1q_vlan": { - "type": "integer", - "description": "VLAN tag to configure on sub-interface.", - "title": "Encapsulation Dot1Q VLAN" - }, - "encapsulation_vlan": { - "type": "object", - "properties": { - "client": { - "type": "object", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Client VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Client Outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Client Inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "unmatched": { - "type": "boolean", - "title": "Unmatched" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Client" - }, - "network": { - "type": "object", - "description": "Network encapsulations are all optional and skipped if using client unmatched.", - "properties": { - "dot1q": { - "type": "object", - "properties": { - "vlan": { - "type": "integer", - "description": "Network VLAN ID.", - "title": "VLAN" - }, - "outer": { - "type": "integer", - "description": "Network outer VLAN ID.", - "title": "Outer" - }, - "inner": { - "type": "integer", - "description": "Network inner VLAN ID.", - "title": "Inner" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Dot1Q" - }, - "client": { - "type": "boolean", - "title": "Client" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Network" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Encapsulation VLAN" - }, - "vlan_id": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "VLAN ID" - }, - "ip_address": { - "type": "string", - "description": "IPv4 address/mask or \"dhcp\".", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string" - }, - "title": "IP Address Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "dhcp_client_accept_default_route": { - "type": "boolean", - "description": "Install default-route obtained via DHCP.", - "title": "DHCP Client Accept Default Route" - }, - "dhcp_server_ipv4": { - "type": "boolean", - "description": "Enable IPv4 DHCP server.", - "title": "DHCP Server IPv4" - }, - "dhcp_server_ipv6": { - "type": "boolean", - "description": "Enable IPv6 DHCP server.", - "title": "DHCP Server IPv6" - }, - "ip_helpers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Source interface name.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_nat": { - "type": "object", - "properties": { - "service_profile": { - "type": "string", - "description": "NAT interface profile.", - "title": "Service Profile" - }, - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "title": "IPv6 Address" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "Link local IPv6 address/mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "Infinite or lifetime in seconds.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "access_group_in": { - "type": "string", - "description": "Access list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "Access list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access list name.", - "title": "IPv6 Access Group Out" - }, - "mac_access_group_in": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group In" - }, - "mac_access_group_out": { - "type": "string", - "description": "MAC access list name.", - "title": "MAC Access Group Out" - }, - "multicast": { - "type": "object", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "ACL name or multicast IP subnet.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Boundaries" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password - only type 7 supported.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "mac_security": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "title": "Profile" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Security" - }, - "tcp_mss_ceiling": { - "type": "object", - "description": "The TCP MSS clamping feature involves clamping the maximum segment size (MSS) in the TCP header\nof TCP SYN packets if it exceeds the configured MSS ceiling limit for the interface.", - "properties": { - "ipv4_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv4 Segment Size" - }, - "ipv6_segment_size": { - "type": "integer", - "minimum": 64, - "maximum": 65475, - "title": "IPv6 Segment Size" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "TCP Mss Ceiling" - }, - "channel_group": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "mode": { - "type": "string", - "enum": [ - "on", - "active", - "passive" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Channel Group" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "isis_circuit_type": { - "type": "string", - "enum": [ - "level-1-2", - "level-1", - "level-2" - ], - "title": "ISIS Circuit Type" - }, - "isis_hello_padding": { - "type": "boolean", - "title": "ISIS Hello Padding" - }, - "isis_authentication_mode": { - "type": "string", - "enum": [ - "text", - "md5" - ], - "title": "ISIS Authentication Mode" - }, - "isis_authentication_key": { - "type": "string", - "description": "Type-7 encrypted password.", - "title": "ISIS Authentication Key" - }, - "poe": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.", - "default": false, - "title": "Disabled" - }, - "priority": { - "type": "string", - "enum": [ - "critical", - "high", - "medium", - "low" - ], - "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power.", - "title": "Priority" - }, - "reboot": { - "description": "Set the PoE power behavior for a PoE port when the system is rebooted.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Reboot" - }, - "link_down": { - "description": "Set the PoE power behavior for a PoE port when the port goes down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - }, - "power_off_delay": { - "type": "integer", - "minimum": 1, - "maximum": 86400, - "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.", - "title": "Power Off Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Link Down" - }, - "shutdown": { - "description": "Set the PoE power behavior for a PoE port when the port is admin down.", - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "maintain", - "power-off" - ], - "description": "PoE action for interface.", - "title": "Action" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shutdown" - }, - "limit": { - "type": "object", - "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.", - "properties": { - "class": { - "type": "integer", - "minimum": 0, - "maximum": 8, - "title": "Class" - }, - "watts": { - "type": "string", - "title": "Watts" - }, - "fixed": { - "type": "boolean", - "description": "Set to ignore hardware classification.", - "title": "Fixed" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Limit" - }, - "negotiation_lldp": { - "type": "boolean", - "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.", - "title": "Negotiation LLDP" - }, - "legacy_detect": { - "type": "boolean", - "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.", - "title": "Legacy Detect" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PoE" - }, - "ptp": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "announce": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - }, - "timeout": { - "type": "integer", - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "title": "Delay Req" - }, - "delay_mechanism": { - "type": "string", - "enum": [ - "e2e", - "p2p" - ], - "title": "Delay Mechanism" - }, - "profile": { - "type": "object", - "properties": { - "g8275_1": { - "type": "object", - "properties": { - "destination_mac_address": { - "type": "string", - "enum": [ - "forwardable", - "non-forwardable" - ], - "title": "Destination MAC Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "G8275 1" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Profile" - }, - "sync_message": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "role": { - "type": "string", - "enum": [ - "master", - "dynamic" - ], - "title": "Role" - }, - "vlan": { - "type": "string", - "description": "VLAN can be 'all' or list of vlans as string.", - "title": "VLAN" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4", - "ipv6", - "layer2" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "profile": { - "type": "string", - "description": "Interface profile.", - "title": "Profile" - }, - "storm_control": { - "type": "object", - "properties": { - "all": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "All" - }, - "broadcast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Broadcast" - }, - "multicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "unknown_unicast": { - "type": "object", - "properties": { - "level": { - "type": "string", - "description": "Configure maximum storm-control level.", - "title": "Level" - }, - "unit": { - "type": "string", - "default": "percent", - "enum": [ - "percent", - "pps" - ], - "description": "Optional field and is hardware dependent.", - "title": "Unit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unknown Unicast" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Storm Control" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - }, - "congestion_drops": { - "type": "boolean", - "title": "Congestion Drops" - }, - "spanning_tree": { - "type": "boolean", - "title": "Spanning Tree" - }, - "storm_control_discards": { - "type": "boolean", - "description": "Discards due to storm-control.\n", - "title": "Storm Control Discards" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "lldp": { - "type": "object", - "properties": { - "transmit": { - "type": "boolean", - "title": "Transmit" - }, - "receive": { - "type": "boolean", - "title": "Receive" - }, - "ztp_vlan": { - "type": "integer", - "description": "ZTP vlan number.", - "title": "ZTP VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LLDP" - }, - "trunk_private_vlan_secondary": { - "type": "boolean", - "title": "Trunk Private VLAN Secondary" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of vlans as string.", - "title": "PVLAN Mapping" - }, - "vlan_translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "List of vlans as string (only one vlan if direction is \"both\").", - "title": "From" - }, - "to": { - "type": "integer", - "description": "VLAN ID.", - "title": "To" - }, - "direction": { - "type": "string", - "enum": [ - "in", - "out", - "both" - ], - "default": "both", - "title": "Direction" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VLAN Translations" - }, - "dot1x": { - "type": "object", - "properties": { - "port_control": { - "type": "string", - "enum": [ - "auto", - "force-authorized", - "force-unauthorized" - ], - "title": "Port Control" - }, - "port_control_force_authorized_phone": { - "type": "boolean", - "title": "Port Control Force Authorized Phone" - }, - "reauthentication": { - "type": "boolean", - "title": "Reauthentication" - }, - "pae": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "authenticator" - ], - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PAE" - }, - "authentication_failure": { - "type": "object", - "properties": { - "action": { - "type": "string", - "enum": [ - "allow", - "drop" - ], - "title": "Action" - }, - "allow_vlan": { - "type": "integer", - "minimum": 1, - "maximum": 4094, - "title": "Allow VLAN" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure" - }, - "host_mode": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "multi-host", - "single-host" - ], - "title": "Mode" - }, - "multi_host_authenticated": { - "type": "boolean", - "title": "Multi Host Authenticated" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Host Mode" - }, - "mac_based_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "always": { - "type": "boolean", - "title": "Always" - }, - "host_mode_common": { - "type": "boolean", - "title": "Host Mode Common" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Based Authentication" - }, - "timeout": { - "type": "object", - "properties": { - "idle_host": { - "type": "integer", - "minimum": 10, - "maximum": 65535, - "title": "Idle Host" - }, - "quiet_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "Quiet Period" - }, - "reauth_period": { - "type": "string", - "description": "Value can be 60-4294967295 or 'server'.", - "title": "Reauth Period" - }, - "reauth_timeout_ignore": { - "type": "boolean", - "title": "Reauth Timeout Ignore" - }, - "tx_period": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "title": "TX Period" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timeout" - }, - "reauthorization_request_limit": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "title": "Reauthorization Request Limit" - }, - "unauthorized": { - "type": "object", - "properties": { - "access_vlan_membership_egress": { - "type": "boolean", - "title": "Access VLAN Membership Egress" - }, - "native_vlan_membership_egress": { - "type": "boolean", - "title": "Native VLAN Membership Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Unauthorized" - }, - "eapol": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean", - "title": "Disabled" - }, - "authentication_failure_fallback_mba": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "timeout": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Authentication Failure Fallback Mba" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Eapol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "dot1x" - }, - "service_profile": { - "type": "string", - "description": "QOS profile.", - "title": "Service Profile" - }, - "shape": { - "type": "object", - "properties": { - "rate": { - "type": "string", - "description": "Rate in kbps, pps or percent.\nSupported options are platform dependent.\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Shape" - }, - "qos": { - "type": "object", - "properties": { - "trust": { - "type": "string", - "enum": [ - "dscp", - "cos", - "disabled" - ], - "title": "Trust" - }, - "dscp": { - "type": "integer", - "description": "DSCP value.", - "title": "DSCP" - }, - "cos": { - "type": "integer", - "description": "COS value.", - "title": "COS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - }, - "spanning_tree_bpdufilter": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpdufilter" - }, - "spanning_tree_bpduguard": { - "type": "string", - "enum": [ - "enabled", - "disabled", - "True", - "False", - "true", - "false" - ], - "title": "Spanning Tree Bpduguard" - }, - "spanning_tree_guard": { - "type": "string", - "enum": [ - "loop", - "root", - "disabled" - ], - "title": "Spanning Tree Guard" - }, - "spanning_tree_portfast": { - "type": "string", - "enum": [ - "edge", - "network" - ], - "title": "Spanning Tree Portfast" - }, - "vmtracer": { - "type": "boolean", - "title": "VMTracer" - }, - "priority_flow_control": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "priorities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "title": "Priority" - }, - "no_drop": { - "type": "boolean", - "title": "No Drop" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "priority" - ] - }, - "title": "Priorities" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Priority Flow Control" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Interval in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Policy Based Routing Policy-map name.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - }, - "qos": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Quality of Service Policy-map name.", - "title": "Input" - } - }, - "required": [ - "input" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "QOS" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "mpls": { - "type": "object", - "properties": { - "ip": { - "type": "boolean", - "title": "IP" - }, - "ldp": { - "type": "object", - "properties": { - "interface": { - "type": "boolean", - "title": "Interface" - }, - "igp_sync": { - "type": "boolean", - "title": "IGP Sync" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LDP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MPLS" - }, - "lacp_timer": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "fast", - "normal" - ], - "title": "Mode" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 3000, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "LACP Timer" - }, - "lacp_port_priority": { - "type": "integer", - "minimum": 0, - "maximum": 65535, - "title": "LACP Port Priority" - }, - "transceiver": { - "type": "object", - "properties": { - "frequency": { - "type": "string", - "description": "Transceiver Laser Frequency in GHz (min 190000, max 200000).", - "title": "Frequency" - }, - "frequency_unit": { - "type": "string", - "enum": [ - "ghz" - ], - "description": "Unit of Transceiver Laser Frequency.", - "title": "Frequency Unit" - }, - "media": { - "type": "object", - "properties": { - "override": { - "type": "string", - "description": "Transceiver type.", - "title": "Override" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Media" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Transceiver" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "traffic_policy": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Ingress traffic policy.", - "title": "Input" - }, - "output": { - "type": "string", - "description": "Egress traffic policy.", - "title": "Output" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traffic Policy" - }, - "bgp": { - "type": "object", - "properties": { - "session_tracker": { - "type": "string", - "description": "Name of session tracker.", - "title": "Session Tracker" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "peer": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer" - }, - "peer_interface": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Interface" - }, - "peer_type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Peer Type" - }, - "sflow": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "egress": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "unmodified_enable": { - "type": "boolean", - "title": "Unmodified Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Egress" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow" - }, - "sync_e": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "title": "Enable" - }, - "priority": { - "type": "string", - "description": "The priority is used to influence the reference clock selection. The EOS default priority is 127. The priority can be configured to any integer between 1-255, or set to `disabled`.", - "title": "Priority" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync E" - }, - "port_profile": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Port Profile" - }, - "uc_tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "min", - "max" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Uc TX Queues" - }, - "tx_queues": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "TX-Queue ID.", - "title": "ID" - }, - "random_detect": { - "type": "object", - "properties": { - "ecn": { - "description": "Explicit Congestion Notification.", - "type": "object", - "properties": { - "count": { - "type": "boolean", - "description": "Enable counter for random-detect ECNs.", - "title": "Count" - }, - "threshold": { - "type": "object", - "properties": { - "units": { - "type": "string", - "enum": [ - "segments", - "bytes", - "kbytes", - "mbytes", - "milliseconds" - ], - "description": "Indicate the units to be used for the threshold values.", - "title": "Units" - }, - "min": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN minimum-threshold.", - "title": "Min" - }, - "max": { - "type": "integer", - "minimum": 1, - "maximum": 256000000, - "description": "Set the random-detect ECN maximum-threshold.", - "title": "Max" - }, - "max_probability": { - "type": "integer", - "minimum": 1, - "maximum": 100, - "description": "Set the random-detect ECN max-mark-probability.", - "title": "Max Probability" - }, - "weight": { - "type": "integer", - "minimum": 0, - "maximum": 15, - "description": "Set the random-detect ECN weight.", - "title": "Weight" - } - }, - "required": [ - "units", - "max", - "max_probability" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ecn" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Random Detect" - } - }, - "required": [ - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "TX Queues" - }, - "vrrp_ids": { - "type": "array", - "description": "VRRP model.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "validate_state": { - "type": "boolean", - "description": "Set to false to disable interface validation by the `eos_validate_state` role.", - "title": "Validate State" - }, - "switchport": { - "type": "object", - "properties": { - "port_security": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "mac_address_maximum": { - "type": "object", - "description": "Maximum number of MAC addresses allowed on the interface.", - "properties": { - "disabled": { - "type": "boolean", - "description": "Disable port level check for port security (only in violation 'shutdown' mode).", - "title": "Disabled" - }, - "limit": { - "type": "integer", - "minimum": 1, - "maximum": 1000, - "description": "MAC address limit.", - "title": "Limit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MAC Address Maximum" - }, - "violation": { - "type": "object", - "description": "Configure violation mode (shutdown or protect), EOS default is 'shutdown'.", - "properties": { - "mode": { - "type": "string", - "enum": [ - "shutdown", - "protect" - ], - "description": "Configure port security mode.", - "title": "Mode" - }, - "protect_log": { - "type": "boolean", - "description": "Log new addresses seen after limit is reached in protect mode.", - "title": "Protect Log" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Violation" - }, - "vlan_default_mac_address_maximum": { - "type": "integer", - "minimum": 0, - "maximum": 1000, - "description": "Default maximum MAC addresses for all VLANs on this interface.", - "title": "VLAN Default MAC Address Maximum" - }, - "vlans": { - "type": "array", - "items": { - "type": "object", - "properties": { - "range": { - "type": "string", - "description": "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n - 3\n - 1,3\n - 1-10\n", - "title": "Range" - }, - "mac_address_maximum": { - "type": "integer", - "title": "MAC Address Maximum" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "range" - ] - }, - "title": "VLANs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Port Security" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Switchport" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "profile" - ] - }, - "title": "Port Profiles" - }, - "ptp": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "profile": { - "type": "string", - "enum": [ - "aes67", - "smpte2059-2", - "aes67-r16-2016" - ], - "default": "aes67-r16-2016", - "title": "Profile" - }, - "domain": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Domain" - }, - "auto_clock_identity": { - "type": "boolean", - "default": true, - "title": "Auto Clock Identity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP" - }, - "ptp_profiles": { - "type": "array", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "PTP profile.", - "title": "Profile" - }, - "announce": { - "type": "object", - "description": "PTP announce interval.", - "properties": { - "interval": { - "type": "integer", - "minimum": -7, - "maximum": 4, - "title": "Interval" - }, - "timeout": { - "type": "integer", - "minimum": 2, - "maximum": 255, - "title": "Timeout" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Announce" - }, - "delay_req": { - "type": "integer", - "minimum": -7, - "maximum": 8, - "title": "Delay Req" - }, - "sync_message": { - "type": "object", - "description": "PTP sync message interval.", - "properties": { - "interval": { - "type": "integer", - "minimum": -7, - "maximum": 3, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sync Message" - }, - "transport": { - "type": "string", - "enum": [ - "ipv4" - ], - "title": "Transport" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "default": [ - { - "announce": { - "interval": 0, - "timeout": 3 - }, - "delay_req": -3, - "profile": "aes67-r16-2016", - "sync_message": { - "interval": -3 - }, - "transport": "ipv4" - }, - { - "announce": { - "interval": -2, - "timeout": 3 - }, - "delay_req": -4, - "profile": "smpte2059-2", - "sync_message": { - "interval": -4 - }, - "transport": "ipv4" - }, - { - "announce": { - "interval": 2, - "timeout": 3 - }, - "delay_req": 0, - "profile": "aes67", - "sync_message": { - "interval": 0 - }, - "transport": "ipv4" - } - ], - "title": "PTP Profiles" - }, - "ptp_settings": { - "type": "object", - "description": "Common PTP settings.\n`ptp_settings` replaces the old `ptp` key. `ptp_settings` takes precedence.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "profile": { - "type": "string", - "enum": [ - "aes67", - "smpte2059-2", - "aes67-r16-2016" - ], - "default": "aes67-r16-2016", - "title": "Profile" - }, - "domain": { - "type": "integer", - "minimum": 0, - "maximum": 255, - "title": "Domain" - }, - "auto_clock_identity": { - "type": "boolean", - "default": true, - "title": "Auto Clock Identity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PTP Settings" - }, - "queue_monitor_length": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "notifying": { - "type": "boolean", - "description": "If True, `eos_designs` will configure `queue-monitor length notifying` according to the\n`platform_settings.[].feature_support.queue_monitor_length_notify` setting.\n", - "title": "Notifying" - }, - "default_thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "description": "Default high threshold for Ethernet Interfaces.\n", - "title": "High" - }, - "low": { - "type": "integer", - "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Thresholds" - }, - "log": { - "type": "integer", - "description": "Logging interval in seconds.", - "title": "Log" - }, - "cpu": { - "type": "object", - "properties": { - "thresholds": { - "type": "object", - "properties": { - "high": { - "type": "integer", - "title": "High" - }, - "low": { - "type": "integer", - "title": "Low" - } - }, - "required": [ - "high" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Thresholds" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "CPU" - }, - "tx_latency": { - "type": "boolean", - "description": "Enable tx-latency mode.", - "title": "TX Latency" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Queue Monitor Length" - }, - "redundancy": { - "type": "object", - "description": "Redundancy for chassis platforms with dual supervisors | Optional.", - "properties": { - "protocol": { - "type": "string", - "enum": [ - "sso", - "rpr" - ], - "title": "Protocol" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Redundancy" - }, - "serial_number": { - "description": "Serial Number of the device.\nUsed for documentation purpose in the fabric documentation as can also be used by the 'eos_config_deploy_cvp' role.\n\"serial_number\" can also be set directly under node type settings.\nIf both are set, the value under node type settings takes precedence.\n", - "type": "string", - "title": "Serial Number" - }, - "sflow_settings": { - "type": "object", - "description": "sFlow settings.\nThe sFlow process will only be configured if any interface is enabled for sFlow.\nFor default enabling of sFlow for various interface types across the fabric see `fabric_sflow`.", - "properties": { - "sample": { - "type": "object", - "properties": { - "rate": { - "type": "integer", - "minimum": 1, - "maximum": 4294967295, - "description": "Packet sampling rate that defines the average number of ingress packets that pass through an interface for every packet that is sampled.\nA rate of 16384 corresponds to an average sample of one per 16384 packets.", - "title": "Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sample" - }, - "destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "destination": { - "type": "string", - "description": "sFlow destination name or IP address.", - "title": "Destination" - }, - "port": { - "type": "integer", - "description": "UDP Port number. The default port number for sFlow is 6343.", - "minimum": 1, - "maximum": 65535, - "title": "Port" - }, - "vrf": { - "type": "string", - "description": "If not set, the VRF is automatically picked up from the global setting `default_mgmt_method`.\nThe value of `vrf` will be interpreted according to these rules:\n- `use_mgmt_interface_vrf` will configure the sFlow destination under the VRF set with `mgmt_interface_vrf` and set the `mgmt_interface` as sFlow source-interface.\n An error will be raised if `mgmt_ip` or `ipv6_mgmt_ip` are not configured for the device.\n- `use_inband_mgmt_vrf` will configure the sFlow destination under the VRF set with `inband_mgmt_vrf` and set the `inband_mgmt_interface` as sFlow source-interface.\n An error will be raised if inband management is not configured for the device.\n- Any other string will be used directly as the VRF name. Remember to set the `sflow_settings.vrfs[].source_interface` if needed.", - "title": "VRF" - } - }, - "required": [ - "destination" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Destinations" - }, - "vrfs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "source_interface": { - "type": "string", - "description": "Source interface to use for sFlow destinations in this VRF.\nIf set for the VRFs defined by `mgmt_interface_vrf` or `inband_mgmt_vrf`, this setting will take precedence.", - "title": "Source Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Sflow Settings" - }, - "shutdown_bgp_towards_undeployed_peers": { - "type": "boolean", - "default": false, - "description": "When a device is set undeployed using `is_deployed: false` and `shutdown_bgp_towards_undeployed_peers` key is set to true, the BGP neighborship is shutdown on the peer.", - "title": "Shutdown BGP Towards Undeployed Peers" - }, - "shutdown_interfaces_towards_undeployed_peers": { - "type": "boolean", - "default": false, - "description": "- It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.\n\n```yaml\n# Use at the host level\nis_deployed: < true or false or default -> true >\n```\n\n- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.\n- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.\n- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.\n- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.\n- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network.\n", - "title": "Shutdown Interfaces Towards Undeployed Peers" - }, - "snmp_settings": { - "type": "object", - "description": "SNMP settings.\nFor SNMP local-interfaces see \"source_interfaces.snmp\".\nConfiguration of remote SNMP engine IDs are currently only possible using `structured_config`.", - "properties": { - "contact": { - "type": "string", - "description": "SNMP contact.", - "title": "Contact" - }, - "location": { - "type": "boolean", - "default": false, - "description": "Set SNMP location. Formatted as \" \".", - "title": "Location" - }, - "vrfs": { - "type": "array", - "description": "Enable/disable SNMP for one or more VRFs.\nCan be used in combination with \"enable_mgmt_interface_vrf\" and \"enable_inband_mgmt_vrf\".", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "enable": { - "type": "boolean", - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "VRFs" - }, - "enable_mgmt_interface_vrf": { - "type": "boolean", - "description": "Enable/disable SNMP for the VRF set with \"mgmt_interface_vrf\".\nIgnored if 'mgmt_ip' or 'ipv6_mgmt_ip' are not configured for the device.\nCan be used in combination with \"vrfs\" and \"enable_inband_mgmt_vrf\".", - "title": "Enable Management Interface VRF" - }, - "enable_inband_mgmt_vrf": { - "type": "boolean", - "description": "Enable/disable SNMP for the VRF set with \"inband_mgmt_vrf\".\nIgnored if inband management is not configured for the device.\nCan be used in combination with \"vrfs\" and \"enable_mgmt_interface_vrf\".", - "title": "Enable Inband Management VRF" - }, - "compute_local_engineid": { - "type": "boolean", - "default": false, - "description": "Generate a local engineId for SNMP using the 'compute_local_engineid_source' method.\n", - "title": "Compute Local Engineid" - }, - "compute_local_engineid_source": { - "type": "string", - "default": "hostname_and_ip", - "description": "`compute_local_engineid_source` supports:\n- `hostname_and_ip` generate a local engineId for SNMP by hashing via SHA1\n the string generated via the concatenation of the hostname plus the management IP.\n {{ inventory_hostname }} + {{ switch.mgmt_ip }}.\n- `system_mac` generate the switch default engine id for AVD usage.\n To use this, `system_mac_address` MUST be set for the device.\n The formula is f5717f + system_mac_address + 00.\n", - "enum": [ - "hostname_and_ip", - "system_mac" - ], - "title": "Compute Local Engineid Source" - }, - "compute_v3_user_localized_key": { - "type": "boolean", - "default": false, - "description": "Requires compute_local_engineid to be `true`.\nIf enabled, the SNMPv3 passphrases for auth and priv are transformed using RFC 2574, matching the value they would take in EOS CLI.\nThe algorithm requires a local engineId, which is unknown to AVD, hence the necessity to generate one beforehand.\n", - "title": "Compute V3 User Localized Key" - }, - "users": { - "type": "array", - "description": "Configuration of local SNMP users.\nConfiguration of remote SNMP users are currently only possible using `structured_config`.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Username.", - "title": "Name" - }, - "group": { - "type": "string", - "description": "Group name.", - "title": "Group" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "auth": { - "type": "string", - "enum": [ - "md5", - "sha", - "sha256", - "sha384", - "sha512" - ], - "title": "Auth" - }, - "auth_passphrase": { - "type": "string", - "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'auth' to be set.", - "title": "Auth Passphrase" - }, - "priv": { - "type": "string", - "enum": [ - "des", - "aes", - "aes192", - "aes256" - ], - "title": "Priv" - }, - "priv_passphrase": { - "type": "string", - "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'priv' to be set.", - "title": "Priv Passphrase" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Host IP address or name.", - "title": "Host" - }, - "vrf": { - "type": "string", - "description": "VRF Name.\nCan be used in combination with \"use_mgmt_interface_vrf\" and \"use_inband_mgmt_vrf\" to configure the SNMP host under multiple VRFs.", - "title": "VRF" - }, - "use_mgmt_interface_vrf": { - "type": "boolean", - "description": "Configure the SNMP host under the VRF set with \"mgmt_interface_vrf\". Ignored if 'mgmt_ip' or 'ipv6_mgmt_ip' are not configured for the device, so if the host is only configured with this VRF, the host will not be configured at all. Can be used in combination with \"vrf\" and \"use_inband_mgmt_vrf\" to configure the SNMP host under multiple VRFs.", - "title": "Use Management Interface VRF" - }, - "use_inband_mgmt_vrf": { - "type": "boolean", - "description": "Configure the SNMP host under the VRF set with \"inband_mgmt_vrf\". Ignored if inband management is not configured for the device, so if the host is only configured with this VRF, the host will not be configured at all. Can be used in combination with \"vrf\" and \"use_mgmt_interface_vrf\" to configure the SNMP host under multiple VRFs.", - "title": "Use Inband Management VRF" - }, - "version": { - "type": "string", - "enum": [ - "1", - "2c", - "3" - ], - "title": "Version" - }, - "community": { - "type": "string", - "description": "Community name.", - "title": "Community" - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "username": { - "type": "string", - "title": "Username" - }, - "authentication_level": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication Level" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Users" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Hosts" - }, - "communities": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Community name.", - "title": "Name" - }, - "access": { - "type": "string", - "enum": [ - "ro", - "rw" - ], - "title": "Access" - }, - "access_list_ipv4": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv4" - }, - "access_list_ipv6": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Access List IPv6" - }, - "view": { - "type": "string", - "title": "View" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Communities" - }, - "ipv4_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv4 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv4 Acls" - }, - "ipv6_acls": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "IPv6 access list name.", - "title": "Name" - }, - "vrf": { - "type": "string", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "IPv6 Acls" - }, - "views": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "SNMP view name.", - "title": "Name" - }, - "mib_family_name": { - "type": "string", - "title": "MIB Family Name" - }, - "included": { - "type": "boolean", - "title": "Included" - }, - "MIB_family_name": { - "type": "string", - "title": "MIB Family Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Views" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Group name.", - "title": "Name" - }, - "version": { - "type": "string", - "enum": [ - "v1", - "v2c", - "v3" - ], - "title": "Version" - }, - "authentication": { - "type": "string", - "enum": [ - "auth", - "noauth", - "priv" - ], - "title": "Authentication" - }, - "read": { - "type": "string", - "description": "Read view.", - "title": "Read" - }, - "write": { - "type": "string", - "description": "Write view.", - "title": "Write" - }, - "notify": { - "type": "string", - "description": "Notify view.", - "title": "Notify" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Groups" - }, - "traps": { - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "default": false, - "description": "Enable or disable all snmp-traps.\n", - "title": "Enable" - }, - "snmp_traps": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Enable or disable specific snmp-traps and their sub_traps.\nExamples:\n- \"bgp\"\n- \"bgp established\"\n", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "default": true, - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Snmp Traps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Traps" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Snmp Settings" - }, - "source_interfaces": { - "type": "object", - "description": "Configure source-interfaces based on the management interfaces set for other `eos_designs` data models.\nBy default, no source-interfaces will be configured. They can still be configured manually using `eos_cli_config_gen` and custom structured configuration.\nEOS supports a single source-interface per VRF, so an error will be raised in case of conflicts.\nErrors will also be raised if an interface is not found for a device.", - "properties": { - "domain_lookup": { - "type": "object", - "description": "IP Domain Lookup source-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Domain Lookup source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Domain Lookup source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Domain Lookup" - }, - "http_client": { - "type": "object", - "description": "IP HTTP Client source-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure an IP HTTP Client source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure an IP HTTP Client source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "HTTP Client" - }, - "radius": { - "type": "object", - "description": "IP Radius source-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Radius source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Radius source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Radius" - }, - "snmp": { - "type": "object", - "description": "SNMP local-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure a SNMP local-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure a SNMP local-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Snmp" - }, - "ssh_client": { - "type": "object", - "description": "IP SSH Client source-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure an IP SSH Client source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure an IP SSH Client source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "SSH Client" - }, - "tacacs": { - "type": "object", - "description": "IP Tacacs source-interfaces.", - "properties": { - "mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Tacacs source-interface with the interface set by `mgmt_interface` for the VRF set by `mgmt_interface_vrf`.\n`mgmt_interface` is typically the out-of-band Management interface, and can be set under the node settings, platform settings or as a group/host var.", - "title": "Management Interface" - }, - "inband_mgmt_interface": { - "type": "boolean", - "description": "Configure an IP Tacacs source-interface with the interface set by `inband_mgmt_interface` for the VRF set by `inband_mgmt_vrf`.\n`inband_mgmt_interface` is typically a loopback or SVI interface, and can be set under the node settings.", - "title": "Inband Management Interface" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tacacs" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Interfaces" - }, - "svi_profiles": { - "type": "array", - "description": "Profiles to share common settings for SVIs under `.[].vrfs.svis`.\nKeys are the same used under SVIs. Keys defined under SVIs take precedence.\nNote: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:\n1. svi.nodes[inventory_hostname].structured_config\n2. svi_profile.nodes[inventory_hostname].structured_config\n3. svi_parent_profile.nodes[inventory_hostname].structured_config\n4. svi.structured_config\n5. svi_profile.structured_config\n6. svi_parent_profile.structured_config\n", - "items": { - "type": "object", - "properties": { - "profile": { - "type": "string", - "description": "Profile name.", - "title": "Profile" - }, - "parent_profile": { - "type": "string", - "description": "Parent SVI profile name to apply.\nsvi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).\n", - "title": "Parent Profile" - }, - "nodes": { - "type": "array", - "description": "Define node specific configuration, such as unique IP addresses.\nAny keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.\n", - "items": { - "type": "object", - "properties": { - "node": { - "type": "string", - "description": "l3_leaf inventory hostname.", - "title": "Node" - }, - "name": { - "type": "string", - "description": "VLAN name.", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "description": "Enable or disable interface.", - "title": "Enabled" - }, - "description": { - "type": "string", - "description": "SVI description. By default set to VLAN name.\n", - "title": "Description" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.", - "title": "IP Address" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.", - "title": "IPv6 Address" - }, - "ipv6_enable": { - "type": "boolean", - "description": "Explicitly enable/disable link-local IPv6 addressing.", - "title": "IPv6 Enable" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.\nIPv4 VXLAN Anycast IP address.\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n", - "title": "IP Address Virtual" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional).\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "IPv6 VXLAN Anycast IP addresses.\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "description": "Secondary IPv4 VXLAN Anycast IP addresses.", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n", - "items": { - "type": "string", - "description": "IPv4_address/Mask or IPv4_address.\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n" - }, - "title": "IP Virtual Router Addresses" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n", - "items": { - "type": "string", - "description": "IPv6_address." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv4_acl_in": { - "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", - "type": "string", - "title": "IPv4 Acl In" - }, - "ipv4_acl_out": { - "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", - "type": "string", - "title": "IPv4 Acl Out" - }, - "ip_helpers": { - "type": "array", - "description": "IP helper for DHCP relay.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IPv4 DHCP server IP.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface name to originate DHCP relay packets to DHCP server.", - "title": "Source Interface" - }, - "source_vrf": { - "type": "string", - "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.", - "title": "Source VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "vni_override": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n", - "title": "Vni Override" - }, - "rt_override": { - "type": "string", - "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", - "title": "Rt Override" - }, - "rd_override": { - "type": "string", - "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", - "title": "Rd Override" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n" - }, - "title": "Trunk Groups" - }, - "evpn_l2_multicast": { - "type": "object", - "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\nRequires `evpn_multicast` to also be set to `true`.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN L2 Multicast" - }, - "evpn_l3_multicast": { - "type": "object", - "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\nRequires `evpn_multicast` to also be set to `true`.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN L3 Multicast" - }, - "igmp_snooping_enabled": { - "type": "boolean", - "description": "Enable IGMP Snooping (Enabled by default on EOS).", - "title": "IGMP Snooping Enabled" - }, - "igmp_snooping_querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Will be enabled automatically if evpn_l2_multicast is enabled.", - "title": "Enabled" - }, - "source_address": { - "type": "string", - "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n", - "title": "Source Address" - }, - "version": { - "type": "integer", - "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).", - "enum": [ - 1, - 2, - 3 - ], - "title": "Version" - }, - "fast_leave": { - "type": "boolean", - "description": "Enable IGMP snooping fast-leave feature.", - "title": "Fast Leave" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IGMP Snooping Querier" - }, - "vxlan": { - "type": "boolean", - "default": true, - "description": "Extend this SVI over VXLAN.", - "title": "VxLAN" - }, - "spanning_tree_priority": { - "type": "integer", - "description": "Setting spanning-tree priority per VLAN is only supported with `spanning_tree_mode: rapid-pvst` under node type settings.\nThe default priority for rapid-PVST is set under the node type settings with `spanning_tree_priority` (default=32768).", - "title": "Spanning Tree Priority" - }, - "mtu": { - "type": "integer", - "description": "Interface MTU.", - "title": "MTU" - }, - "ospf": { - "type": "object", - "description": "OSPF interface configuration.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "point_to_point": { - "type": "boolean", - "default": true, - "title": "Point To Point" - }, - "area": { - "type": "string", - "description": "OSPF area ID.", - "default": "0", - "title": "Area" - }, - "cost": { - "type": "integer", - "description": "OSPF link cost.", - "title": "Cost" - }, - "authentication": { - "type": "string", - "enum": [ - "simple", - "message-digest" - ], - "title": "Authentication" - }, - "simple_auth_key": { - "type": "string", - "description": "Password used with simple authentication.", - "title": "Simple Auth Key" - }, - "message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "default": "sha512", - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Type 7 encrypted key.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Message Digest Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "OSPF" - }, - "bgp": { - "type": "object", - "properties": { - "structured_config": { - "type": "object", - "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=].\nThis configuration will not be applied to vlan aware bundles.\n", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", - "title": "EOS CLI" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n", - "title": "Raw EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n", - "properties": { - "name": { - "type": "string", - "description": "VLAN interface name like \"Vlan123\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "arp_aging_timeout": { - "type": "integer", - "description": "In seconds.", - "minimum": 1, - "maximum": 65535, - "title": "ARP Aging Timeout" - }, - "arp_cache_dynamic_capacity": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "ARP Cache Dynamic Capacity" - }, - "arp_gratuitous_accept": { - "type": "boolean", - "title": "ARP Gratuitous Accept" - }, - "arp_monitor_mac_address": { - "type": "boolean", - "title": "ARP Monitor MAC Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ip_directed_broadcast": { - "type": "boolean", - "title": "IP Directed Broadcast" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 address or IPv4_address/Mask." - }, - "title": "IP Virtual Router Addresses" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address Virtual" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_igmp": { - "type": "boolean", - "title": "IP IGMP" - }, - "ip_igmp_version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "title": "IP IGMP Version" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "ip_helpers": { - "type": "array", - "description": "List of DHCP servers.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IP address or hostname of DHCP server.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface used as source for forwarded DHCP packets.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF where DHCP server can be reached.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "IP DHCP Relay All Subnets" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_virtual_router_address": { - "type": "string", - "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", - "deprecated": true, - "title": "IPv6 Virtual Router Address" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", - "items": { - "type": "string", - "description": "IPv6 address or IPv6_address/Mask." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_other_config_flag": { - "type": "boolean", - "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", - "title": "IPv6 ND Other Config Flag" - }, - "ipv6_nd_cache": { - "type": "object", - "description": "IPv6 neighbor cache options.", - "properties": { - "dynamic_capacity": { - "type": "integer", - "description": "Capacity of dynamic cache entries.", - "minimum": 0, - "maximum": 4294967295, - "title": "Dynamic Capacity" - }, - "expire": { - "type": "integer", - "description": "Cache entries expirery in seconds.", - "minimum": 1, - "maximum": 65535, - "title": "Expire" - }, - "refresh_always": { - "type": "boolean", - "description": "Force refresh on cache expiry.", - "title": "Refresh Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 ND Cache" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "ipv6_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "IPv6 DHCP Relay All Subnets" - }, - "access_group_in": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group Out" - }, - "multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password used for simple authentication.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "description": "Keys used for message-digest authentication.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "no_autostate": { - "type": "boolean", - "title": "No Autostate" - }, - "vrrp_ids": { - "type": "array", - "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "vrrp": { - "type": "object", - "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", - "deprecated": true, - "properties": { - "virtual_router": { - "type": "string", - "description": "Virtual Router ID.", - "title": "Virtual Router" - }, - "priority": { - "type": "integer", - "description": "Instance priority.", - "title": "Priority" - }, - "advertisement_interval": { - "type": "integer", - "title": "Advertisement Interval" - }, - "preempt_delay_minimum": { - "type": "integer", - "title": "Preempt Delay Minimum" - }, - "ipv4": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VRRP" - }, - "ip_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Attached Host Route Export" - }, - "ipv6_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Administrative distance for generated routes.", - "title": "Distance" - }, - "prefix_length": { - "type": "integer", - "minimum": 0, - "maximum": 128, - "description": "Prefix length for generated routes.", - "title": "Prefix Length" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Attached Host Route Export" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Minimum RX hold time in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Name of policy-map used for policy based routing.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of VLANs as string.", - "title": "PVLAN Mapping" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Key only used for documentation or validation purposes.", - "title": "Tags" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "node" - ] - }, - "title": "Nodes" - }, - "name": { - "type": "string", - "description": "VLAN name.", - "title": "Name" - }, - "enabled": { - "type": "boolean", - "description": "Enable or disable interface.", - "title": "Enabled" - }, - "description": { - "type": "string", - "description": "SVI description. By default set to VLAN name.\n", - "title": "Description" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.", - "title": "IP Address" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.", - "title": "IPv6 Address" - }, - "ipv6_enable": { - "type": "boolean", - "description": "Explicitly enable/disable link-local IPv6 addressing.", - "title": "IPv6 Enable" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.\nIPv4 VXLAN Anycast IP address.\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n", - "title": "IP Address Virtual" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional).\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "IPv6 VXLAN Anycast IP addresses.\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "description": "Secondary IPv4 VXLAN Anycast IP addresses.", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n", - "items": { - "type": "string", - "description": "IPv4_address/Mask or IPv4_address.\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n" - }, - "title": "IP Virtual Router Addresses" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n", - "items": { - "type": "string", - "description": "IPv6_address." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv4_acl_in": { - "description": "Name of the IPv4 access-list to be assigned in the ingress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", - "type": "string", - "title": "IPv4 Acl In" - }, - "ipv4_acl_out": { - "description": "Name of the IPv4 Access-list to be assigned in the egress direction.\nThe access-list must be defined under `ipv4_acls` and supports substitution of the field \"interface_ip\".", - "type": "string", - "title": "IPv4 Acl Out" - }, - "ip_helpers": { - "type": "array", - "description": "IP helper for DHCP relay.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IPv4 DHCP server IP.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface name to originate DHCP relay packets to DHCP server.", - "title": "Source Interface" - }, - "source_vrf": { - "type": "string", - "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.", - "title": "Source VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "vni_override": { - "type": "integer", - "minimum": 1, - "maximum": 16777215, - "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n", - "title": "Vni Override" - }, - "rt_override": { - "type": "string", - "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon separator which will override the full RT.\n", - "title": "Rt Override" - }, - "rd_override": { - "type": "string", - "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).\n - A full RD string with colon separator which will override the full RD.\n", - "title": "Rd Override" - }, - "trunk_groups": { - "type": "array", - "items": { - "type": "string", - "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n" - }, - "title": "Trunk Groups" - }, - "evpn_l2_multicast": { - "type": "object", - "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\nRequires `evpn_multicast` to also be set to `true`.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN L2 Multicast" - }, - "evpn_l3_multicast": { - "type": "object", - "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\nRequires `evpn_multicast` to also be set to `true`.\n", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "EVPN L3 Multicast" - }, - "igmp_snooping_enabled": { - "type": "boolean", - "description": "Enable IGMP Snooping (Enabled by default on EOS).", - "title": "IGMP Snooping Enabled" - }, - "igmp_snooping_querier": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Will be enabled automatically if evpn_l2_multicast is enabled.", - "title": "Enabled" - }, - "source_address": { - "type": "string", - "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n", - "title": "Source Address" - }, - "version": { - "type": "integer", - "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).", - "enum": [ - 1, - 2, - 3 - ], - "title": "Version" - }, - "fast_leave": { - "type": "boolean", - "description": "Enable IGMP snooping fast-leave feature.", - "title": "Fast Leave" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IGMP Snooping Querier" - }, - "vxlan": { - "type": "boolean", - "default": true, - "description": "Extend this SVI over VXLAN.", - "title": "VxLAN" - }, - "spanning_tree_priority": { - "type": "integer", - "description": "Setting spanning-tree priority per VLAN is only supported with `spanning_tree_mode: rapid-pvst` under node type settings.\nThe default priority for rapid-PVST is set under the node type settings with `spanning_tree_priority` (default=32768).", - "title": "Spanning Tree Priority" - }, - "mtu": { - "type": "integer", - "description": "Interface MTU.", - "title": "MTU" - }, - "ospf": { - "type": "object", - "description": "OSPF interface configuration.", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "point_to_point": { - "type": "boolean", - "default": true, - "title": "Point To Point" - }, - "area": { - "type": "string", - "description": "OSPF area ID.", - "default": "0", - "title": "Area" - }, - "cost": { - "type": "integer", - "description": "OSPF link cost.", - "title": "Cost" - }, - "authentication": { - "type": "string", - "enum": [ - "simple", - "message-digest" - ], - "title": "Authentication" - }, - "simple_auth_key": { - "type": "string", - "description": "Password used with simple authentication.", - "title": "Simple Auth Key" - }, - "message_digest_keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "default": "sha512", - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Type 7 encrypted key.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Message Digest Keys" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "OSPF" - }, - "bgp": { - "type": "object", - "properties": { - "structured_config": { - "type": "object", - "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=].\nThis configuration will not be applied to vlan aware bundles.\n", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "rd": { - "description": "Route distinguisher.", - "type": "string", - "title": "Rd" - }, - "rd_evpn_domain": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "rd": { - "type": "string", - "description": "Route distinguisher.", - "title": "Rd" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Rd EVPN Domain" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.", - "title": "EOS CLI" - }, - "route_targets": { - "type": "object", - "properties": { - "both": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Both" - }, - "import": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Import" - }, - "export": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Export" - }, - "import_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import EVPN Domains" - }, - "export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Export EVPN Domains" - }, - "import_export_evpn_domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "enum": [ - "remote", - "all" - ], - "title": "Domain" - }, - "route_target": { - "type": "string", - "title": "Route Target" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Export EVPN Domains" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Route Targets" - }, - "redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "Redistribute Routes" - }, - "no_redistribute_routes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "No Redistribute Routes" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n", - "title": "Raw EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BGP" - }, - "raw_eos_cli": { - "type": "string", - "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n", - "title": "Raw EOS CLI" - }, - "structured_config": { - "type": "object", - "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n", - "properties": { - "name": { - "type": "string", - "description": "VLAN interface name like \"Vlan123\".", - "title": "Name" - }, - "description": { - "type": "string", - "title": "Description" - }, - "logging": { - "type": "object", - "properties": { - "event": { - "type": "object", - "properties": { - "link_status": { - "type": "boolean", - "title": "Link Status" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Event" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Logging" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - }, - "vrf": { - "type": "string", - "description": "VRF name.", - "title": "VRF" - }, - "arp_aging_timeout": { - "type": "integer", - "description": "In seconds.", - "minimum": 1, - "maximum": 65535, - "title": "ARP Aging Timeout" - }, - "arp_cache_dynamic_capacity": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "ARP Cache Dynamic Capacity" - }, - "arp_gratuitous_accept": { - "type": "boolean", - "title": "ARP Gratuitous Accept" - }, - "arp_monitor_mac_address": { - "type": "boolean", - "title": "ARP Monitor MAC Address" - }, - "ip_proxy_arp": { - "type": "boolean", - "title": "IP Proxy ARP" - }, - "ip_directed_broadcast": { - "type": "boolean", - "title": "IP Directed Broadcast" - }, - "ip_address": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address" - }, - "ip_address_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Secondaries" - }, - "ip_virtual_router_addresses": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4 address or IPv4_address/Mask." - }, - "title": "IP Virtual Router Addresses" - }, - "ip_address_virtual": { - "type": "string", - "description": "IPv4_address/Mask.", - "title": "IP Address Virtual" - }, - "ip_address_virtual_secondaries": { - "type": "array", - "items": { - "type": "string", - "description": "IPv4_address/Mask." - }, - "title": "IP Address Virtual Secondaries" - }, - "ip_verify_unicast_source_reachable_via": { - "type": "string", - "enum": [ - "any", - "rx" - ], - "title": "IP Verify Unicast Source Reachable Via" - }, - "ip_igmp": { - "type": "boolean", - "title": "IP IGMP" - }, - "ip_igmp_version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "title": "IP IGMP Version" - }, - "ip_igmp_host_proxy": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "groups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "group": { - "type": "string", - "description": "Multicast Address.", - "title": "Group" - }, - "exclude": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Exclude" - }, - "include": { - "type": "array", - "description": "The same source must not be present both in `exclude` and `include` list.", - "items": { - "type": "object", - "properties": { - "source": { - "type": "string", - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "source" - ] - }, - "title": "Include" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "group" - ] - }, - "title": "Groups" - }, - "report_interval": { - "type": "integer", - "minimum": 1, - "maximum": 31744, - "description": "Time interval between unsolicited reports.", - "title": "Report Interval" - }, - "access_lists": { - "type": "array", - "description": "Non-standard Access List name.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Access Lists" - }, - "version": { - "type": "integer", - "minimum": 1, - "maximum": 3, - "description": "IGMP version on IGMP host-proxy interface.", - "title": "Version" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP IGMP Host Proxy" - }, - "ip_helpers": { - "type": "array", - "description": "List of DHCP servers.", - "items": { - "type": "object", - "properties": { - "ip_helper": { - "type": "string", - "description": "IP address or hostname of DHCP server.", - "title": "IP Helper" - }, - "source_interface": { - "type": "string", - "description": "Interface used as source for forwarded DHCP packets.", - "title": "Source Interface" - }, - "vrf": { - "type": "string", - "description": "VRF where DHCP server can be reached.", - "title": "VRF" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ip_helper" - ] - }, - "title": "IP Helpers" - }, - "ip_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with secondary IP addresses in the gateway address \"giaddr\" field.", - "title": "IP DHCP Relay All Subnets" - }, - "ip_nat": { - "type": "object", - "properties": { - "destination": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "pool_name": { - "type": "string", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "pool_name", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Destination" - }, - "source": { - "type": "object", - "properties": { - "dynamic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "nat_type": { - "type": "string", - "enum": [ - "overload", - "pool", - "pool-address-only", - "pool-full-cone" - ], - "title": "Nat Type" - }, - "pool_name": { - "type": "string", - "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone.\nignored if 'nat_type' is overload.\n", - "title": "Pool Name" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - } - }, - "required": [ - "nat_type", - "access_list" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Dynamic" - }, - "static": { - "type": "array", - "items": { - "type": "object", - "properties": { - "access_list": { - "type": "string", - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Access List" - }, - "comment": { - "type": "string", - "title": "Comment" - }, - "direction": { - "type": "string", - "enum": [ - "egress", - "ingress" - ], - "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n", - "title": "Direction" - }, - "group": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "'access_list' and 'group' are mutual exclusive.", - "title": "Group" - }, - "original_ip": { - "type": "string", - "description": "IPv4 address. The combination of `original_ip` and `original_port` must be unique.", - "title": "Original IP" - }, - "original_port": { - "type": "integer", - "description": "TCP/UDP port. The combination of `original_ip` and `original_port` must be unique.", - "minimum": 1, - "maximum": 65535, - "title": "Original Port" - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 4294967295, - "title": "Priority" - }, - "protocol": { - "type": "string", - "enum": [ - "udp", - "tcp" - ], - "title": "Protocol" - }, - "translated_ip": { - "type": "string", - "description": "IPv4 address.", - "title": "Translated IP" - }, - "translated_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "requires 'original_port'.", - "title": "Translated Port" - } - }, - "required": [ - "translated_ip" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Nat" - }, - "ipv6_enable": { - "type": "boolean", - "title": "IPv6 Enable" - }, - "ipv6_address": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address" - }, - "ipv6_address_virtual": { - "type": "string", - "description": "IPv6_address/Mask.\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.", - "deprecated": true, - "title": "IPv6 Address Virtual" - }, - "ipv6_address_virtuals": { - "type": "array", - "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.", - "items": { - "type": "string", - "description": "IPv6_address/Mask." - }, - "title": "IPv6 Address Virtuals" - }, - "ipv6_address_link_local": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Address Link Local" - }, - "ipv6_virtual_router_address": { - "type": "string", - "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.", - "deprecated": true, - "title": "IPv6 Virtual Router Address" - }, - "ipv6_virtual_router_addresses": { - "type": "array", - "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.", - "items": { - "type": "string", - "description": "IPv6 address or IPv6_address/Mask." - }, - "title": "IPv6 Virtual Router Addresses" - }, - "ipv6_nd_ra_disabled": { - "type": "boolean", - "title": "IPv6 ND RA Disabled" - }, - "ipv6_nd_managed_config_flag": { - "type": "boolean", - "title": "IPv6 ND Managed Config Flag" - }, - "ipv6_nd_other_config_flag": { - "type": "boolean", - "description": "Set the \"other stateful configuration\" flag in IPv6 router advertisements.", - "title": "IPv6 ND Other Config Flag" - }, - "ipv6_nd_cache": { - "type": "object", - "description": "IPv6 neighbor cache options.", - "properties": { - "dynamic_capacity": { - "type": "integer", - "description": "Capacity of dynamic cache entries.", - "minimum": 0, - "maximum": 4294967295, - "title": "Dynamic Capacity" - }, - "expire": { - "type": "integer", - "description": "Cache entries expirery in seconds.", - "minimum": 1, - "maximum": 65535, - "title": "Expire" - }, - "refresh_always": { - "type": "boolean", - "description": "Force refresh on cache expiry.", - "title": "Refresh Always" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 ND Cache" - }, - "ipv6_nd_prefixes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ipv6_prefix": { - "type": "string", - "description": "IPv6_address/Mask.", - "title": "IPv6 Prefix" - }, - "valid_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Valid Lifetime" - }, - "preferred_lifetime": { - "type": "string", - "description": "In seconds <0-4294967295> or infinite.", - "title": "Preferred Lifetime" - }, - "no_autoconfig_flag": { - "type": "boolean", - "title": "No Autoconfig Flag" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "ipv6_prefix" - ] - }, - "title": "IPv6 ND Prefixes" - }, - "ipv6_dhcp_relay_destinations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "DHCP server's IPv6 address.", - "title": "Address" - }, - "vrf": { - "type": "string", - "title": "VRF" - }, - "local_interface": { - "type": "string", - "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address.", - "title": "Local Interface" - }, - "source_address": { - "type": "string", - "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface.", - "title": "Source Address" - }, - "link_address": { - "type": "string", - "description": "Override the default link address specified in the relayed DHCP packet.", - "title": "Link Address" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "address" - ] - }, - "title": "IPv6 DHCP Relay Destinations" - }, - "ipv6_dhcp_relay_all_subnets": { - "type": "boolean", - "description": "Allow forwarding requests with additional IPv6 addresses in the gateway address \"giaddr\" field.", - "title": "IPv6 DHCP Relay All Subnets" - }, - "access_group_in": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group In" - }, - "access_group_out": { - "type": "string", - "description": "IPv4 access-list name.", - "title": "Access Group Out" - }, - "ipv6_access_group_in": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group In" - }, - "ipv6_access_group_out": { - "type": "string", - "description": "IPv6 access-list name.", - "title": "IPv6 Access Group Out" - }, - "multicast": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv4 access-list name or IPv4 multicast group prefix with mask.", - "title": "Boundary" - }, - "out": { - "type": "boolean", - "title": "Out" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "boundaries": { - "type": "array", - "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both.", - "items": { - "type": "object", - "properties": { - "boundary": { - "type": "string", - "description": "IPv6 access-list name or IPv6 multicast group prefix with mask.", - "title": "Boundary" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "boundary" - ] - }, - "title": "Boundaries" - }, - "source_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "administrative_distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Administrative Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Source Route Export" - }, - "static": { - "type": "boolean", - "title": "Static" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Multicast" - }, - "ospf_network_point_to_point": { - "type": "boolean", - "title": "OSPF Network Point To Point" - }, - "ospf_area": { - "type": "string", - "title": "OSPF Area" - }, - "ospf_cost": { - "type": "integer", - "title": "OSPF Cost" - }, - "ospf_authentication": { - "type": "string", - "enum": [ - "none", - "simple", - "message-digest" - ], - "title": "OSPF Authentication" - }, - "ospf_authentication_key": { - "type": "string", - "description": "Encrypted password used for simple authentication.", - "title": "OSPF Authentication Key" - }, - "ospf_message_digest_keys": { - "type": "array", - "description": "Keys used for message-digest authentication.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "description": "Encrypted password.", - "title": "Key" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "OSPF Message Digest Keys" - }, - "pim": { - "type": "object", - "properties": { - "ipv4": { - "type": "object", - "properties": { - "border_router": { - "type": "boolean", - "description": "Configure PIM border router. EOS default is false.", - "title": "Border Router" - }, - "dr_priority": { - "type": "integer", - "minimum": 0, - "maximum": 429467295, - "title": "DR Priority" - }, - "sparse_mode": { - "type": "boolean", - "title": "Sparse Mode" - }, - "local_interface": { - "type": "string", - "title": "Local Interface" - }, - "bfd": { - "type": "boolean", - "description": "Set the default for whether Bidirectional Forwarding Detection is enabled for PIM.", - "title": "BFD" - }, - "bidirectional": { - "type": "boolean", - "title": "Bidirectional" - }, - "hello": { - "type": "object", - "properties": { - "count": { - "type": "string", - "description": "Number of missed hellos after which the neighbor expires. Range <1.5-65535>.", - "title": "Count" - }, - "interval": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "PIM hello interval in seconds.", - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Hello" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PIM" - }, - "isis_enable": { - "type": "string", - "description": "ISIS instance name.", - "title": "ISIS Enable" - }, - "isis_bfd": { - "type": "boolean", - "description": "Enable BFD for ISIS.", - "title": "ISIS BFD" - }, - "isis_passive": { - "type": "boolean", - "title": "ISIS Passive" - }, - "isis_metric": { - "type": "integer", - "title": "ISIS Metric" - }, - "isis_network_point_to_point": { - "type": "boolean", - "title": "ISIS Network Point To Point" - }, - "mtu": { - "type": "integer", - "title": "MTU" - }, - "no_autostate": { - "type": "boolean", - "title": "No Autostate" - }, - "vrrp_ids": { - "type": "array", - "description": "Improved \"vrrp\" data model to support multiple VRRP IDs.", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "description": "VRID.", - "title": "ID" - }, - "priority_level": { - "type": "integer", - "description": "Instance priority.", - "minimum": 1, - "maximum": 254, - "title": "Priority Level" - }, - "advertisement": { - "type": "object", - "properties": { - "interval": { - "type": "integer", - "description": "Interval in seconds.", - "minimum": 1, - "maximum": 255, - "title": "Interval" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Advertisement" - }, - "preempt": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "delay": { - "type": "object", - "properties": { - "minimum": { - "type": "integer", - "description": "Minimum preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Minimum" - }, - "reload": { - "type": "integer", - "description": "Reload preempt delay in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Preempt" - }, - "timers": { - "type": "object", - "properties": { - "delay": { - "type": "object", - "properties": { - "reload": { - "type": "integer", - "description": "Delay after reload in seconds.", - "minimum": 0, - "maximum": 3600, - "title": "Reload" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Delay" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Timers" - }, - "tracked_object": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Tracked object name.", - "title": "Name" - }, - "decrement": { - "type": "integer", - "minimum": 1, - "maximum": 254, - "description": "Decrement VRRP priority by 1-254.", - "title": "Decrement" - }, - "shutdown": { - "type": "boolean", - "title": "Shutdown" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Tracked Object" - }, - "ipv4": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "Address" - }, - "version": { - "type": "integer", - "enum": [ - 2, - 3 - ], - "title": "Version" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv4" - }, - "ipv6": { - "type": "object", - "properties": { - "address": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "Address" - } - }, - "required": [ - "address" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "id" - ] - }, - "title": "VRRP IDs" - }, - "vrrp": { - "type": "object", - "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.", - "deprecated": true, - "properties": { - "virtual_router": { - "type": "string", - "description": "Virtual Router ID.", - "title": "Virtual Router" - }, - "priority": { - "type": "integer", - "description": "Instance priority.", - "title": "Priority" - }, - "advertisement_interval": { - "type": "integer", - "title": "Advertisement Interval" - }, - "preempt_delay_minimum": { - "type": "integer", - "title": "Preempt Delay Minimum" - }, - "ipv4": { - "type": "string", - "description": "Virtual IPv4 address.", - "title": "IPv4" - }, - "ipv6": { - "type": "string", - "description": "Virtual IPv6 address.", - "title": "IPv6" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "VRRP" - }, - "ip_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "title": "Distance" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IP Attached Host Route Export" - }, - "ipv6_attached_host_route_export": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enabled" - }, - "distance": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Administrative distance for generated routes.", - "title": "Distance" - }, - "prefix_length": { - "type": "integer", - "minimum": 0, - "maximum": 128, - "description": "Prefix length for generated routes.", - "title": "Prefix Length" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "IPv6 Attached Host Route Export" - }, - "bfd": { - "type": "object", - "properties": { - "echo": { - "type": "boolean", - "title": "Echo" - }, - "interval": { - "type": "integer", - "description": "Rate in milliseconds.", - "title": "Interval" - }, - "min_rx": { - "type": "integer", - "description": "Minimum RX hold time in milliseconds.", - "title": "Min RX" - }, - "multiplier": { - "type": "integer", - "minimum": 3, - "maximum": 50, - "title": "Multiplier" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "BFD" - }, - "service_policy": { - "type": "object", - "properties": { - "pbr": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Name of policy-map used for policy based routing.", - "title": "Input" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "PBR" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Service Policy" - }, - "pvlan_mapping": { - "type": "string", - "description": "List of VLANs as string.", - "title": "PVLAN Mapping" - }, - "tenant": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Tenant" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Key only used for documentation or validation purposes.", - "title": "Tags" - }, - "type": { - "type": "string", - "description": "Key only used for documentation or validation purposes.", - "title": "Type" - }, - "eos_cli": { - "type": "string", - "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration.", - "title": "EOS CLI" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Structured Config" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "profile" - ] - }, - "title": "SVI Profiles" - }, - "system_mac_address": { - "type": "string", - "description": "Set to the same MAC address as available in \"show version\" on the device.\n\"system_mac_address\" can also be set under node type settings.\nIf both are set, the value under node type settings takes precedence.\n", - "title": "System MAC Address" - }, - "terminattr_disable_aaa": { - "type": "boolean", - "default": false, - "title": "TerminAttr Disable AAA" - }, - "terminattr_ingestexclude": { - "type": "string", - "default": "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent", - "title": "TerminAttr Ingestexclude" - }, - "terminattr_ingestgrpcurl_port": { - "type": "integer", - "default": 9910, - "description": "Port number used for Terminattr connection to an on-premise CloudVision cluster.\nThe port number is always 443 when using CloudVision as a Service, so this value is ignored.", - "title": "TerminAttr Ingestgrpcurl Port" - }, - "terminattr_smashexcludes": { - "type": "string", - "default": "ale,flexCounter,hardware,kni,pulse,strata", - "title": "TerminAttr Smashexcludes" - }, - "timezone": { - "type": "string", - "description": "Clock timezone like \"CET\" or \"US/Pacific\".", - "title": "Timezone" - }, - "trunk_groups": { - "type": "object", - "properties": { - "mlag": { - "type": "object", - "description": "Trunk Group used for MLAG VLAN (Typically VLAN 4094).\n", - "properties": { - "name": { - "type": "string", - "default": "MLAG", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG" - }, - "mlag_l3": { - "type": "object", - "description": "Trunk Group used for MLAG L3 peering VLAN and for VRF L3 peering VLANs (Typically VLAN 4093).\n", - "properties": { - "name": { - "type": "string", - "default": "LEAF_PEER_L3", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "MLAG L3" - }, - "uplink": { - "type": "object", - "description": "Trunk Group used on L2 Leaf switches when \"enable_trunk_groups\" is set.\n", - "properties": { - "name": { - "type": "string", - "default": "UPLINK", - "title": "Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Uplink" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Trunk Groups" - }, - "type": { - "type": "string", - "description": "The `type:` variable needs to be defined for each device in the fabric.\nThis is leveraged to load the appropriate template to generate the configuration.\n", - "title": "Type" - }, - "underlay_filter_peer_as": { - "type": "boolean", - "description": "Configure route-map on eBGP sessions towards underlay peers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in very large scale networks not using EVPN overlays, where convergence will be quicker by not having to return\nall updates received from Spine-1 to Spine-2 just for Spine-2 to throw them away because of AS Path loop detection.\nNote that this setting cannot be used while there are EVPN services present in the default VRF.\n", - "default": false, - "title": "Underlay Filter Peer As" - }, - "underlay_filter_redistribute_connected": { - "description": "Filter redistribution of connected into the underlay routing protocol.\nOnly applicable when overlay_routing_protocol != 'none' and underlay_routing_protocol == BGP.\nCreates a route-map and prefix-list assigned to redistribute connected permitting only loopbacks and inband management subnets.\n", - "default": true, - "type": "boolean", - "title": "Underlay Filter Redistribute Connected" - }, - "underlay_ipv6": { - "description": "This feature allows IPv6 underlay routing protocol with RFC5549 addresses to be used along with IPv4 advertisements as VXLAN tunnel endpoints.\nRequires \"underlay_rfc5549: true\" and \"loopback_ipv6_pool\" under the node type settings.\n", - "type": "boolean", - "default": false, - "title": "Underlay IPv6" - }, - "underlay_isis_bfd": { - "type": "boolean", - "default": false, - "description": "Enable BFD for ISIS on all underlay links.", - "title": "Underlay ISIS BFD" - }, - "underlay_isis_instance_name": { - "description": "Default -> \"EVPN_UNDERLAY\" for l3ls, \"CORE\" for mpls.", - "type": "string", - "title": "Underlay ISIS Instance Name" - }, - "underlay_multicast": { - "type": "boolean", - "description": "Enable Multicast in the underlay on all p2p uplink interfaces and mlag l3 peer interface.\nSpecifically PIM Sparse-Mode will be configured on all routed underlay interfaces.\nNo other configuration is added, so the underlay will only support Source-Specific Multicast (SSM).\nThe configuration is intended to be used as multicast underlay for EVPN OISM overlay.\n", - "default": false, - "title": "Underlay Multicast" - }, - "underlay_multicast_anycast_rp": { - "type": "object", - "description": "If multiple nodes are configured under 'underlay_multicast_rps.[].nodes' for the same RP address, they will be configured\nwith one of the following methods:\n- Anycast RP using PIM (RFC4610).\n- Anycast RP using MSDP (RFC4611).\n\nNOTE: When using MSDP, all nodes across all MSDP enabled RPs will be added to a single MSDP mesh group named \"ANYCAST-RP\".\n", - "properties": { - "mode": { - "type": "string", - "enum": [ - "pim", - "msdp" - ], - "default": "pim", - "title": "Mode" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Underlay Multicast Anycast RP" - }, - "underlay_multicast_rps": { - "description": "List of PIM Sparse-Mode Rendevouz Points configured for underlay multicast on all devices.\nThe device(s) listed under 'nodes', will be configured as the Rendevouz point router(s).\nIf multiple nodes are configured under 'nodes' for the same RP address, they will be configured\naccording to the 'underlay_multicast_anycast_rp.mode' setting.\n\nRequires 'underlay_multicast: true'.\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "rp": { - "type": "string", - "description": "RP IPv4 address.", - "title": "RP" - }, - "nodes": { - "type": "array", - "description": "List of nodes where a Loopback interface with the RP address will be configured.\n", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Hostname.", - "title": "Name" - }, - "loopback_number": { - "type": "integer", - "title": "Loopback Number" - }, - "description": { - "type": "string", - "description": "Interface description.", - "default": "PIM RP", - "title": "Description" - } - }, - "required": [ - "loopback_number", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Nodes" - }, - "groups": { - "type": "array", - "description": "List of groups to associate with the RP address set in 'rp'.\nIf access_list_name is set, a standard access-list will be configured matching these groups.\nOtherwise the groups are configured directly on the RP command.\n", - "items": { - "type": "string", - "description": "Multicast Group IPv4 prefix/mask." - }, - "title": "Groups" - }, - "access_list_name": { - "type": "string", - "description": "Name of standard Access-List.\n", - "title": "Access List Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "rp" - ] - }, - "title": "Underlay Multicast RPs" - }, - "underlay_ospf_area": { - "type": "string", - "format": "ipv4", - "default": "0.0.0.0", - "title": "Underlay OSPF Area" - }, - "underlay_ospf_authentication": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false, - "title": "Enabled" - }, - "message_digest_keys": { - "type": "array", - "minItems": 1, - "maxItems": 2, - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "title": "ID" - }, - "hash_algorithm": { - "type": "string", - "enum": [ - "md5", - "sha1", - "sha256", - "sha384", - "sha512" - ], - "default": "sha512", - "title": "Hash Algorithm" - }, - "key": { - "type": "string", - "maxLength": 16, - "minLength": 1, - "description": "Key password.\nOnly plaintext passwords are supported here as `eos_designs` will encrypt the password for each individual underlay interface.\nTo protect the password at rest it is strongly recommended to make use of Ansible Vault or similar.", - "title": "Key" - } - }, - "required": [ - "key", - "id" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Message Digest Keys" - } - }, - "required": [ - "enabled", - "message_digest_keys" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Underlay OSPF Authentication" - }, - "underlay_ospf_bfd_enable": { - "type": "boolean", - "default": false, - "title": "Underlay OSPF BFD Enable" - }, - "underlay_ospf_max_lsa": { - "type": "integer", - "default": 12000, - "title": "Underlay OSPF Max LSA" - }, - "underlay_ospf_process_id": { - "type": "integer", - "default": 100, - "title": "Underlay OSPF Process ID" - }, - "underlay_rfc5549": { - "description": "Point to Point Underlay with RFC 5549(eBGP), i.e. IPv6 Unnumbered.\nRequires \"underlay_routing_protocol: ebgp\".\n", - "type": "boolean", - "default": false, - "title": "Underlay Rfc5549" - }, - "underlay_routing_protocol": { - "type": "string", - "description": "- The following underlay routing protocols are supported:\n - EBGP (default for l3ls-evpn)\n - OSPF.\n - OSPF-LDP*.\n - ISIS.\n - ISIS-SR*.\n - ISIS-LDP*.\n - ISIS-SR-LDP*.\n - No underlay routing protocol (none)\n- The variables should be applied to all devices in the fabric.\n*Only supported with core_interfaces data model.\n", - "enum": [ - "ebgp", - "ospf", - "ospf-ldp", - "isis", - "isis-sr", - "isis-ldp", - "isis-sr-ldp", - "none" - ], - "title": "Underlay Routing Protocol" - }, - "uplink_ptp": { - "description": "Enable PTP on all infrastructure links.", - "type": "object", - "properties": { - "enable": { - "type": "boolean", - "default": false, - "title": "Enable" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Uplink PTP" - }, - "use_cv_topology": { - "type": "boolean", - "description": "Generate AVD configurations directly from a given CloudVision topology.\nSee `cv_topology` for details.", - "title": "Use Cv Topology" - }, - "vtep_vvtep_ip": { - "description": "IP Address used as Virtual VTEP. Will be configured as secondary IP on Loopback1.\nThis is only needed for centralized routing designs.\n", - "type": "string", - "title": "Vtep Vvtep IP" - }, - "wan_carriers": { - "description": "List of carriers used for the WAN configuration and their mapping to path-groups.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Carrier name.", - "title": "Name" - }, - "description": { - "type": "string", - "description": "Additional information about the carrier for documentation purposes.", - "title": "Description" - }, - "path_group": { - "type": "string", - "description": "The path-group to which this carrier belongs.", - "title": "Path Group" - }, - "trusted": { - "type": "boolean", - "default": false, - "description": "Set this to `true` to mark this carrier as \"trusted\".\nWAN interfaces require an inbound access-list to be set unless the carrier is \"trusted\".", - "title": "Trusted" - } - }, - "required": [ - "path_group", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Wan Carriers" - }, - "wan_ha": { - "description": "PREVIEW: The `wan_ha` key is currently not supported.", - "type": "object", - "properties": { - "lan_ha_path_group_name": { - "type": "string", - "default": "LAN_HA", - "description": "When WAN HA is enabled for a site if `wan_mode: cv-pathfinder`, a default path-group is injected to form DPS tunnels over LAN.\nThis key allows to overwrite the default LAN HA path-group name.", - "title": "Lan Ha Path Group Name" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wan Ha" - }, - "wan_ipsec_profiles": { - "description": "Define IPsec profiles parameters for WAN configuration.", - "type": "object", - "properties": { - "control_plane": { - "type": "object", - "properties": { - "ike_policy_name": { - "type": "string", - "default": "CP-IKE-POLICY", - "description": "Name of the IKE policy.", - "title": "Ike Policy Name" - }, - "sa_policy_name": { - "type": "string", - "default": "CP-SA-POLICY", - "description": "Name of the SA policy.", - "title": "Sa Policy Name" - }, - "profile_name": { - "type": "string", - "default": "CP-PROFILE", - "description": "Name of the IPSec profile.", - "title": "Profile Name" - }, - "shared_key": { - "type": "string", - "description": "The IPSec shared key.\nThis variable is sensitive and SHOULD be configured using some vault mechanism.", - "title": "Shared Key" - } - }, - "required": [ - "shared_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Plane" - }, - "data_plane": { - "type": "object", - "description": "If `data_plane` is not defined, `control_plane` information is used for both.", - "properties": { - "ike_policy_name": { - "type": "string", - "default": "DP-IKE-POLICY", - "description": "Name of the IKE policy.", - "title": "Ike Policy Name" - }, - "sa_policy_name": { - "type": "string", - "default": "DP-SA-POLICY", - "description": "Name of the SA policy.", - "title": "Sa Policy Name" - }, - "profile_name": { - "type": "string", - "default": "DP-PROFILE", - "description": "Name of the IPSec profile.", - "title": "Profile Name" - }, - "shared_key": { - "type": "string", - "description": "The type 7 encrypted IPSec shared key.\nThis variable is sensitive and should be configured using some vault mechanism.", - "title": "Shared Key" - } - }, - "required": [ - "shared_key" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Data Plane" - } - }, - "required": [ - "control_plane" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wan Ipsec Profiles" - }, - "wan_mode": { - "description": "Select if the WAN should be run using CV Pathfinder or AutoVPN only.", - "type": "string", - "default": "cv-pathfinder", - "enum": [ - "autovpn", - "cv-pathfinder" - ], - "title": "Wan Mode" - }, - "wan_path_groups": { - "description": "List of path-groups used for the WAN configuration.", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path-group name.", - "title": "Name" - }, - "id": { - "type": "integer", - "description": "Path-group id.\nRequired until an auto ID algorithm is implemented.", - "title": "ID" - }, - "description": { - "type": "string", - "description": "Additional information about the path-group for documentation purposes.", - "title": "Description" - }, - "ipsec": { - "type": "object", - "description": "Configuration of IPSec at the path-group level.", - "properties": { - "dynamic_peers": { - "type": "boolean", - "description": "Enable IPSec for dynamic peers.", - "default": true, - "title": "Dynamic Peers" - }, - "static_peers": { - "type": "boolean", - "description": "Enable IPSec for static peers.", - "default": true, - "title": "Static Peers" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Ipsec" - }, - "import_path_groups": { - "type": "array", - "description": "List of path-groups to import in this path-group.", - "items": { - "type": "object", - "properties": { - "remote": { - "type": "string", - "description": "Remote path-group to import.", - "title": "Remote" - }, - "local": { - "type": "string", - "description": "Optional, if not set, the path-group `name` is used as local.", - "title": "Local" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Import Path Groups" - }, - "default_preference": { - "type": "string", - "description": "Preference value used when a preference is not given for a path-group in the `wan_virtual_topologies.policies` input or when\nthe path-group is used in an auto generated policy except if `excluded_from_default_policy` is set to `true.\n\nValid values are 1-65535 | \"preferred\" | \"alternate\".\n\n`preferred` is converted to priority 1.\n`alternate` is converted to priority 2.", - "default": "preferred", - "title": "Default Preference" - }, - "excluded_from_default_policy": { - "type": "boolean", - "default": false, - "description": "When set to `true`, the path-group is excluded from AVD auto generated policies.", - "title": "Excluded From Default Policy" - }, - "dps_keepalive": { - "type": "object", - "description": "Period between the transmission of consecutive keepalive messages, and failure threshold.", - "properties": { - "interval": { - "type": "string", - "description": "Interval in milliseconds. Valid values are 50-60000 | \"auto\".\n\nWhen auto, the interval and failure_threshold are automatically determined based on\npath state.", - "title": "Interval" - }, - "failure_threshold": { - "type": "integer", - "minimum": 2, - "maximum": 100, - "default": 5, - "description": "Failure threshold in number of lost keep-alive messages.", - "title": "Failure Threshold" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "DPS Keepalive" - } - }, - "required": [ - "id", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Wan Path Groups" - }, - "wan_route_servers": { - "description": "List of the AutoVPN RRs when using `wan_mode`=`autovpn`, or the Pathfinders\nwhen using `wan_mode`=`cv-pathfinder`, to which the device should connect to.\nThis is also used to establish iBGP sessions between WAN route servers.\n\nWhen the route server is part of the same inventory as the WAN routers,\nonly the name is required.", - "type": "array", - "items": { - "type": "object", - "properties": { - "hostname": { - "type": "string", - "description": "Route-Reflector hostname.", - "title": "Hostname" - }, - "vtep_ip": { - "type": "string", - "description": "Route-Reflector VTEP IP Address. This is usually the IP address under `interface Dps1`.", - "title": "Vtep IP" - }, - "path_groups": { - "type": "array", - "description": "Path-groups through which the Route Reflector/Pathfinder is reached.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Path-group name.", - "title": "Name" - }, - "interfaces": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Interface name.", - "title": "Name" - }, - "public_ip": { - "type": "string", - "description": "The public IPv4 address (without mask) of the Route Reflector for this path-group.", - "title": "Public IP" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "name" - ] - }, - "title": "Interfaces" - } - }, - "required": [ - "interfaces", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Groups" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "hostname" - ] - }, - "title": "Wan Route Servers" - }, - "wan_stun_dtls_disable": { - "type": "boolean", - "default": false, - "description": "WAN STUN connections are authenticated and secured with DTLS by default.\nFor CV Pathfinder deployments CloudVision will automatically deploy certificates on the devices.\nIn case of AutoVPN the certificates must be deployed manually to all devices.\n\nFor LAB environments this can be disabled, if there are no certificates available.\nThis should NOT be disabled for a WAN network connected to the internet, since it will leave the STUN service exposed with no authentication.", - "title": "Wan STUN Dtls Disable" - }, - "wan_stun_dtls_profile_name": { - "type": "string", - "default": "STUN-DTLS", - "description": "Name of the SSL profile used for DTLS on WAN STUN connections.\nWhen using automatic ceritficate deployment via CloudVision this name must be the same on all WAN routers.", - "title": "Wan STUN Dtls Profile Name" - }, - "wan_virtual_topologies": { - "type": "object", - "description": "Configure Virtual Topologies for CV Pathfinder and AutoVPN.\nAuto create a control plane profile/policy/application and enforce it being first in the default VRF.", - "properties": { - "vrfs": { - "type": "array", - "description": "Map a VRF that exists in network_services to an AVT policy.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "VRF name.", - "title": "Name" - }, - "policy": { - "type": "string", - "description": "Name of the policy to apply to this VRF.\nAVD will auto generate a default policy DEFAULT-POLICY and apply it to the VRF(s)\nwhere the `policy` key is not set.\nIt is possible to overwrite the default policy for all VRFs using it\nby redefining it in the `wan_virtual_topologies.policies` list using the\ndefault name `DEFAULT-POLICY`.", - "default": "DEFAULT-POLICY", - "title": "Policy" - }, - "wan_vni": { - "type": "integer", - "minimum": 1, - "maximum": 255, - "description": "Required for VRFs carried over AutoVPN or CV Pathfinder WAN.\n\nA VRF can have different VNIs between the Datacenters and the WAN.\nNote that if no VRF default is configured for WAN, AVD will automatically inject the VRF default with\n`wan_vni` set to `1`.\nIn addition either `vrf_id` or `vrf_vni` must be set to enforce consistent route-targets across domains.", - "title": "Wan Vni" - } - }, - "required": [ - "wan_vni", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "VRFs" - }, - "control_plane_virtual_topology": { - "type": "object", - "description": "Always injected into the default VRF policy as the first entry.\n\nBy default, if no path-groups are specified, all locally available path-groups\nare used in the generated load-balance policy.\nID is hardcoded to 254 for the AVT profile in CV Pathfinder mode.", - "properties": { - "name": { - "type": "string", - "description": "Optional name, if not set `CONTROL-PLANE-PROFILE` is used.", - "title": "Name" - }, - "application_profile": { - "type": "string", - "default": "APP-PROFILE-CONTROL-PLANE", - "description": "The application profile to use for control plane traffic.\n\nThe application profile should be defined under `application_classification.application_profiles`.\nIf not defined AVD will auto generate an application profile using the provided name or the default value.\n\nIf not overwritten elsewhere, the application profile is generated matching one application matching the control plane traffic either sourced from or destined to the WAN route servers.", - "title": "Application Profile" - }, - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Set traffic-class for matched traffic.", - "title": "Traffic Class" - }, - "dscp": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "description": "Set DSCP for matched traffic.", - "title": "DSCP" - }, - "lowest_hop_count": { - "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", - "type": "boolean", - "default": false, - "title": "Lowest Hop Count" - }, - "constraints": { - "type": "object", - "properties": { - "jitter": { - "type": "integer", - "description": "Jitter requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Jitter" - }, - "latency": { - "type": "integer", - "description": "One way delay requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Latency" - }, - "loss_rate": { - "type": "string", - "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "title": "Loss Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Constraints" - }, - "path_groups": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "names": { - "type": "array", - "description": "List of path-group names.", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Names" - }, - "preference": { - "type": "string", - "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", - "title": "Preference" - } - }, - "required": [ - "names" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Groups" - }, - "internet_exit": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Internet Exit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Control Plane Virtual Topology" - }, - "policies": { - "type": "array", - "description": "List of virtual toplogies policies.\n\nFor AutoVPN, each item in the list creates:\n * one policy with:\n * one `match` entry per `application_virtual_topologies` item\n they are indexed using `10 * ` where `list_index` starts at `1`.\n * one `default-match`\n * one load-balance policy per `application_virtual_topologies` and one for the `default_virtual_topology`.\n * if the policy is associated with the default VRF, a special control-plane rule is injected\n in the policy with index `1` referring to a control-plane load-balance policy as defined under\n `control_plane_virtual_topology` or if not set, the default one.\n\nFor CV Pathfinder, each item in the list creates:\n * one policy with:\n * one `match` entry per `application_virtual_topologies` item ordered as in the data.\n * one last match entry for the `default` application-profile using `default_virtual_topology` information.\n * one profile per `application_virtual_topologies` item.\n * one profile for the `default_virtual_topology`.\n * one load-balance policy per `application_virtual_topologies`.\n * one load_balance policy for the `default_virtual_topology`.\n * if the policy is associated with the default VRF, a special control-plane profile is configured\n and injected first in the policy assigned to the `default` VRF. This profile points to a\n control-plane load-balance policy as defined under `control_plane_virtual_topology` or if not set, the default one.", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the AVT policy.", - "title": "Name" - }, - "application_virtual_topologies": { - "type": "array", - "description": "List of application specific virtual topologies.", - "items": { - "type": "object", - "properties": { - "application_profile": { - "type": "string", - "description": "The application profile to use for this virtual topology. It must be a defined `application_classification.application_profile`.", - "title": "Application Profile" - }, - "name": { - "type": "string", - "description": "Optional name, if not set `-` is used.", - "title": "Name" - }, - "id": { - "type": "integer", - "minimum": 2, - "maximum": 253, - "description": "ID of the AVT in each VRFs. ID must be unique across all virtual topologies in a policy.\nID 1 is reserved for the default_virtual_toplogy.\nID 254 is reserved for the control_plane_virtual_topology.\n\n`id` is required when `wan_mode` is 'cv-pathfinder'.", - "title": "ID" - }, - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Set traffic-class for matched traffic.", - "title": "Traffic Class" - }, - "dscp": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "description": "Set DSCP for matched traffic.", - "title": "DSCP" - }, - "lowest_hop_count": { - "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", - "type": "boolean", - "default": false, - "title": "Lowest Hop Count" - }, - "constraints": { - "type": "object", - "properties": { - "jitter": { - "type": "integer", - "description": "Jitter requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Jitter" - }, - "latency": { - "type": "integer", - "description": "One way delay requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Latency" - }, - "loss_rate": { - "type": "string", - "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "title": "Loss Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Constraints" - }, - "path_groups": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "names": { - "type": "array", - "description": "List of path-group names.", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Names" - }, - "preference": { - "type": "string", - "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", - "title": "Preference" - } - }, - "required": [ - "names" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Groups" - }, - "internet_exit": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Internet Exit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "required": [ - "application_profile" - ] - }, - "title": "Application Virtual Topologies" - }, - "default_virtual_topology": { - "type": "object", - "description": "Default match for the policy.\nIf no default match should be configured, set `drop_unmatched` to `true`.\nOtherwise, in CV Pathfinder mode, a default AVT profile will be configured with ID 1.", - "properties": { - "name": { - "type": "string", - "description": "Optional name, if not set `-DEFAULT` is used.", - "title": "Name" - }, - "drop_unmatched": { - "type": "boolean", - "description": "When set, no `catch-all` match is configured for the policy and unmatched traffic is dropped.", - "default": false, - "title": "Drop Unmatched" - }, - "traffic_class": { - "type": "integer", - "minimum": 0, - "maximum": 7, - "description": "Set traffic-class for matched traffic.", - "title": "Traffic Class" - }, - "dscp": { - "type": "integer", - "minimum": 0, - "maximum": 63, - "description": "Set DSCP for matched traffic.", - "title": "DSCP" - }, - "lowest_hop_count": { - "description": "Prefer paths with lowest hop-count.\nOnly applicable for `wan_mode: \"cv-pathfinder\"`.", - "type": "boolean", - "default": false, - "title": "Lowest Hop Count" - }, - "constraints": { - "type": "object", - "properties": { - "jitter": { - "type": "integer", - "description": "Jitter requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Jitter" - }, - "latency": { - "type": "integer", - "description": "One way delay requirement for this load balance policy in milliseconds.", - "minimum": 0, - "maximum": 10000, - "title": "Latency" - }, - "loss_rate": { - "type": "string", - "description": "Loss Rate requirement in percentage for this load balance policy.\nValue between 0.00 and 100.00.", - "pattern": "^\\d+(\\.\\d{1,2})?$", - "title": "Loss Rate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Constraints" - }, - "path_groups": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "names": { - "type": "array", - "description": "List of path-group names.", - "minItems": 1, - "items": { - "type": "string" - }, - "title": "Names" - }, - "preference": { - "type": "string", - "description": "Valid values are 1-65535 | \"preferred\" | \"alternate\".\n\n\"preferred\" is converted to priority 1.\n\"alternate\" is converted to priority 2.\n\nIf not set, each path-group in `names` will be attributed its `default_preference`.", - "title": "Preference" - } - }, - "required": [ - "names" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Path Groups" - }, - "internet_exit": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "PREVIEW: This key is in preview mode.\n\nInternet-exit policy name associated with this virtual_topology.\nThe policy must be defined under `cv_pathfinder_internet_exit_policies`.", - "title": "Policy" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Internet Exit" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Default Virtual Topology" - } - }, - "required": [ - "default_virtual_topology", - "name" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - } - }, - "title": "Policies" - } - }, - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Wan Virtual Topologies" - }, - "zscaler_endpoints": { - "type": "object", - "description": "PREVIEW: These keys are in preview mode.\n\nSpecial data model used for testing the WAN internet-exit integration with Zscaler.\nThe model is supposed to be autofilled per-device by `eos_designs`.\nManually setting this model will take precedence and prevent `eos_designs` from trying to contact CloudVision.\nThis can be useful for offline testing or if CloudVision is not available or not configured for Zscaler integration.", - "properties": { - "primary": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "datacenter": { - "type": "string", - "title": "Datacenter" - }, - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - }, - "latitude": { - "type": "string", - "title": "Latitude" - }, - "longitude": { - "type": "string", - "title": "Longitude" - } - }, - "required": [ - "ip_address", - "datacenter", - "city", - "country", - "latitude", - "longitude" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Primary" - }, - "secondary": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "datacenter": { - "type": "string", - "title": "Datacenter" - }, - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - }, - "latitude": { - "type": "string", - "title": "Latitude" - }, - "longitude": { - "type": "string", - "title": "Longitude" - } - }, - "required": [ - "ip_address", - "datacenter", - "city", - "country", - "latitude", - "longitude" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Secondary" - }, - "tertiary": { - "type": "object", - "properties": { - "ip_address": { - "type": "string", - "title": "IP Address" - }, - "datacenter": { - "type": "string", - "title": "Datacenter" - }, - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - }, - "latitude": { - "type": "string", - "title": "Latitude" - }, - "longitude": { - "type": "string", - "title": "Longitude" - } - }, - "required": [ - "ip_address", - "datacenter", - "city", - "country", - "latitude", - "longitude" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Tertiary" - }, - "cloud_name": { - "description": "The name of the Zscaler cloud the CloudVision cluster is integrated with like 'zscaler1' or 'zscalerbeta'.", - "type": "string", - "title": "Cloud Name" - }, - "device_location": { - "description": "The location of the calling device after being resolved by Zscaler location APIs. This is required since Zscaler only accepts their own variants of City and Country.", - "type": "object", - "properties": { - "city": { - "type": "string", - "title": "City" - }, - "country": { - "type": "string", - "title": "Country" - } - }, - "required": [ - "city", - "country" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Device Location" - } - }, - "required": [ - "primary", - "cloud_name", - "device_location" - ], - "additionalProperties": false, - "patternProperties": { - "^_.+$": {} - }, - "title": "Zscaler Endpoints" - } - }, - "required": [ - "fabric_name" - ], - "additionalProperties": true -} \ No newline at end of file From 43d74b787a0086039971b2546227d543b90533b3 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:03:46 +0530 Subject: [PATCH 16/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: Claus Holbech --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 4d959c378d3..2b78a294829 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -422,7 +422,7 @@ $defs: type: str description: | IPv4_address/Mask. - Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. + Loopback IPv4 range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. loopback_ipv6_range: type: str From 1ba507d0927840dcc9fc8c758f28a614f910ca37 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:03:56 +0530 Subject: [PATCH 17/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: Claus Holbech --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 2b78a294829..6069b5846b0 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -428,7 +428,7 @@ $defs: type: str description: | IPv6_address/Mask. - Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id. + Loopback IPv6 range, a unique IPv6 address is derived from this range and assigned to each L3 leaf based on it's unique ID. Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. loopback_ip_pools: type: list From 54eaee9886778b5d9c4d0891875c9cf2bdf2efb1 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:04:04 +0530 Subject: [PATCH 18/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: Claus Holbech --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 6069b5846b0..ab6cc471b6d 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -429,7 +429,7 @@ $defs: description: | IPv6_address/Mask. Loopback IPv6 range, a unique IPv6 address is derived from this range and assigned to each L3 leaf based on it's unique ID. - Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. loopback_ip_pools: type: list description: | From 01cb2d8e6089b20335b94615db4f14c726a52751 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:04:15 +0530 Subject: [PATCH 19/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: Claus Holbech --- .../schema/schema_fragments/defs_network_services.schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index ab6cc471b6d..1d48e780c0f 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -423,7 +423,7 @@ $defs: description: | IPv4_address/Mask. Loopback IPv4 range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. - Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. loopback_ipv6_range: type: str description: | From eaccf8dd60a23407a8db200cd204470b04638813 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:04:22 +0530 Subject: [PATCH 20/24] Update python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml Co-authored-by: Claus Holbech --- .../schema/schema_fragments/defs_network_services.schema.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml index 1d48e780c0f..c198226b529 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml @@ -434,7 +434,8 @@ $defs: type: list description: | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. - This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). + `loopback_ip_range` takes precedence for IPv4 and `loopback_ipv6_range` takes precedence for IPV6. + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. items: type: dict keys: From 51bbdc03e8ef3b4359c52790fa53c6c1f5a704fa Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:04:29 +0530 Subject: [PATCH 21/24] Update python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py Co-authored-by: Claus Holbech --- .../structured_config/network_services/loopback_interfaces.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index 51b505293e1..1111235bbe8 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -83,7 +83,7 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic pod_name = self.shared_utils.pod_name loopback_ip_pools = get(vrf, "vtep_diagnostic.loopback_ip_pools") - if ((loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None) and (pod_name and loopback_ip_pools): + if ((loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None) and pod_name and loopback_ip_pools: loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") if ((loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None) and (pod_name and loopback_ip_pools): From f8b5b73d195767ef520d49ec786da5ccd59acb5c Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:04:37 +0530 Subject: [PATCH 22/24] Update python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py Co-authored-by: Claus Holbech --- .../structured_config/network_services/loopback_interfaces.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py index 1111235bbe8..5fd32968e24 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py +++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/loopback_interfaces.py @@ -86,7 +86,7 @@ def _get_vtep_diagnostic_loopback_for_vrf(self: AvdStructuredConfigNetworkServic if ((loopback_ipv4_pool := get(vrf, "vtep_diagnostic.loopback_ip_range")) is None) and pod_name and loopback_ip_pools: loopback_ipv4_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv4_pool") - if ((loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None) and (pod_name and loopback_ip_pools): + if ((loopback_ipv6_pool := get(vrf, "vtep_diagnostic.loopback_ipv6_range")) is None) and pod_name and loopback_ip_pools: loopback_ipv6_pool = get_item(loopback_ip_pools, "pod", pod_name, default={}).get("ipv6_pool") if not loopback_ipv4_pool and not loopback_ipv6_pool: From 1cd7c616bb603c25f25b046c558e25ceda4e3c8e Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Fri, 9 Aug 2024 11:19:01 +0530 Subject: [PATCH 23/24] fixing Ci after addressing comments --- .../tables/network-services-vrfs-settings.md | 17 ++++++------- .../schema/eos_designs.schema.yml | 24 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index f259f6c8d2d..c06f00002da 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -31,9 +31,9 @@ | [        vtep_diagnostic](## ".[].vrfs.[].vtep_diagnostic") | Dictionary | | | | Enable VTEP Network diagnostics.
This will create a loopback with virtual source-nat enable to perform diagnostics from the switch.
| | [          loopback](## ".[].vrfs.[].vtep_diagnostic.loopback") | Integer | | | Min: 2
Max: 2100 | Loopback interface number, required when vtep_diagnotics defined.
| | [          loopback_description](## ".[].vrfs.[].vtep_diagnostic.loopback_description") | String | | | | Provide a custom description for loopback interface. | - | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ip_range or loopback_ip_pools are set.
| - | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set.
| - | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set).
| + | [          loopback_ip_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_range") | String | | | | IPv4_address/Mask.
Loopback IPv4 range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id.
Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set.
| + | [          loopback_ipv6_range](## ".[].vrfs.[].vtep_diagnostic.loopback_ipv6_range") | String | | | | IPv6_address/Mask.
Loopback IPv6 range, a unique IPv6 address is derived from this range and assigned to each L3 leaf based on it's unique ID.
Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set.
| + | [          loopback_ip_pools](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools") | List, items: Dictionary | | | | For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps.
`loopback_ip_range` takes precedence for IPv4 and `loopback_ipv6_range` takes precedence for IPV6.
Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set.
| | [            - pod](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].pod") | String | | | | POD name. | | [              ipv4_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv4_pool") | String | | | | IPv4_address/Mask. | | [              ipv6_pool](## ".[].vrfs.[].vtep_diagnostic.loopback_ip_pools.[].ipv6_pool") | String | | | | IPv6_address/Mask. | @@ -184,17 +184,18 @@ loopback_description: # IPv4_address/Mask. - # Loopback ip range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. - # Loopback is not created unless loopback_ip_range or loopback_ip_pools are set. + # Loopback IPv4 range, a unique ip is derived from this range and assigned to each l3 leaf based on it's unique id. + # Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. loopback_ip_range: # IPv6_address/Mask. - # Loopback ipv6 range, a unique ipv6 is derived from this range and assigned to each l3 leaf based on it's unique id. - # Loopback is not created unless loopback_ipv6_range or loopback_ip_pools are set. + # Loopback IPv6 range, a unique IPv6 address is derived from this range and assigned to each L3 leaf based on it's unique ID. + # Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. loopback_ipv6_range: # For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. - # This only takes effect when loopback_ip_range is not defined, optional (loopback is not created unless loopback_ip_range or loopback_ip_pools are set). + # `loopback_ip_range` takes precedence for IPv4 and `loopback_ipv6_range` takes precedence for IPV6. + # Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` or `loopback_ip_pools` are set. loopback_ip_pools: # POD name. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 88504f97fa9..c1a8fea1ce3 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -6013,22 +6013,22 @@ $defs: type: str description: 'IPv4_address/Mask. - Loopback ip range, a unique ip is derived from this range and - assigned to each l3 leaf based on it''s unique id. + Loopback IPv4 range, a unique ip is derived from this range + and assigned to each l3 leaf based on it''s unique id. - Loopback is not created unless loopback_ip_range or loopback_ip_pools - are set. + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` + or `loopback_ip_pools` are set. ' loopback_ipv6_range: type: str description: 'IPv6_address/Mask. - Loopback ipv6 range, a unique ipv6 is derived from this range - and assigned to each l3 leaf based on it''s unique id. + Loopback IPv6 range, a unique IPv6 address is derived from this + range and assigned to each L3 leaf based on it''s unique ID. - Loopback is not created unless loopback_ipv6_range or loopback_ip_pools - are set. + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` + or `loopback_ip_pools` are set. ' loopback_ip_pools: @@ -6036,9 +6036,11 @@ $defs: description: 'For inventories with multiple PODs a loopback range can be set per POD to avoid overlaps. - This only takes effect when loopback_ip_range is not defined, - optional (loopback is not created unless loopback_ip_range or - loopback_ip_pools are set). + `loopback_ip_range` takes precedence for IPv4 and `loopback_ipv6_range` + takes precedence for IPV6. + + Loopback is not created unless `loopback_ip_range`, `loopback_ipv6_range` + or `loopback_ip_pools` are set. ' items: From d2cfc15937f3f28fa42a85d38c2665295f5f62a4 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab <109593615+Vibhu-gslab@users.noreply.github.com> Date: Thu, 3 Oct 2024 16:32:13 +0530 Subject: [PATCH 24/24] Update python-avd/pyavd/_eos_designs/ip_addressing/__init__.py Co-authored-by: Bjoern Meuer <47240261+bjmeuer@users.noreply.github.com> --- python-avd/pyavd/_eos_designs/ip_addressing/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py index b1640111fa3..100e73ad238 100644 --- a/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py +++ b/python-avd/pyavd/_eos_designs/ip_addressing/__init__.py @@ -313,7 +313,7 @@ def vrf_loopback_ip(self, pool: str) -> str: def vrf_loopback_ipv6(self, pool: str) -> str: """ - Return IP address for a Loopback interface based on the given pool. + Return IPv6 address for a Loopback interface based on the given pool. Default offset from pool is `id + loopback_ipv6_offset`.