From 9cc227999c29580eaa7395f0c1dbf50d96f8d575 Mon Sep 17 00:00:00 2001 From: Shivani-gslab Date: Tue, 2 Jul 2024 16:06:08 +0530 Subject: [PATCH] Feat(eos_cli_config_gen): Add switchport 'tap' and 'tool' mode config to data-model --- .../devices/ethernet-interfaces.md | 21 + .../devices/port-channel-interfaces.md | 19 + .../intended/configs/ethernet-interfaces.cfg | 21 + .../configs/port-channel-interfaces.cfg | 19 + .../host_vars/ethernet-interfaces.yml | 49 + .../host_vars/port-channel-interfaces.yml | 49 + .../docs/tables/ethernet-interfaces.md | 137 ++ .../docs/tables/port-channel-interfaces.md | 139 ++ .../j2templates/eos/ethernet-interfaces.j2 | 92 + .../eos/port-channel-interfaces.j2 | 92 + .../schema/eos_cli_config_gen.jsonschema.json | 608 +++++ .../schema/eos_cli_config_gen.schema.yml | 337 +++ .../ethernet_interfaces.schema.yml | 166 ++ .../port_channel_interfaces.schema.yml | 169 ++ .../schema/eos_designs.jsonschema.json | 2123 +++++++++++++++++ 15 files changed, 4041 insertions(+) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md index 2318b1562c7..cdf7c9806b8 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/ethernet-interfaces.md @@ -362,6 +362,27 @@ interface Ethernet1 l2 mru 8000 bgp session tracker ST1 no switchport + switchport tap native vlan 10 + switchport tap identity 3 inner 5 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity dot1q source dzgre port + switchport tap truncation 150 + switchport tool truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx bfd interval 500 min-rx 500 multiplier 5 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md index 40d4b4778c0..1a15ebc497a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/port-channel-interfaces.md @@ -511,6 +511,25 @@ interface Port-Channel99 interface Port-Channel100 logging event link-status no switchport + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ! interface Port-Channel100.101 description IFL for TENANT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg index 7be8c428e5a..15c5bf0c6dd 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/ethernet-interfaces.cfg @@ -15,6 +15,27 @@ interface Ethernet1 l2 mru 8000 bgp session tracker ST1 no switchport + switchport tap native vlan 10 + switchport tap identity 3 inner 5 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation vxlan strip + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 source 1.1.1.2 protocol 0x0000 feature header length 10 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity dot1q source dzgre port + switchport tap truncation 150 + switchport tool truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ip address 172.31.255.1/31 ip verify unicast source reachable-via rx bfd interval 500 min-rx 500 multiplier 5 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg index 2dcb815b60d..a3d70457503 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/port-channel-interfaces.cfg @@ -165,6 +165,25 @@ interface Port-Channel99 interface Port-Channel100 logging event link-status no switchport + switchport tap native vlan 10 + switchport tap identity 3 + switchport tap mac-address dest 01:00:00:00:00:00 src 01:23:45:67:89:ab + switchport tap encapsulation gre strip + switchport tap encapsulation gre destination 1.1.1.1 protocol 0x0000 strip + switchport tool mpls pop all + switchport tool encapsulation vn-tag strip + switchport tool encapsulation dot1br strip + switchport tap allowed vlan 25 + switchport tool allowed vlan 23 + switchport tool identity qinq + switchport tool identity qinq source dzgre port inner policy + switchport tap truncation + switchport tap default group g1 group g2 group g3 + switchport tap default nexthop-group nexthop_g1 nexthop_g2 nexthop_g3 + switchport tap default interface ethernet4 + switchport tap default interface port-channel10 + switchport tool group set group1 group2 group3 + switchport tool dzgre preserve ! interface Port-Channel100.101 description IFL for TENANT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml index f7b6a7174b1..6c6fba2817b 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/ethernet-interfaces.yml @@ -36,6 +36,55 @@ ethernet_interfaces: switchport: port_security: enabled: true + tap: + allowed_vlan: 25 + default: + groups: + - g2 + - g1 + - g3 + nexthop_groups: + - nexthop_g1 + - nexthop_g3 + - nexthop_g2 + interfaces: + - port-channel10 + - ethernet4 + identity: + port_id: 3 + inner_port_id: 5 + mpls_pop_all: true + native_vlan: 10 + truncation: + enabled: true + size: 150 + mac_address: + dest: 01:00:00:00:00:00 + src: 01:23:45:67:89:ab + encapsulation: + vxlan_strip: true + gre_strip: true + gre: + destination: 1.1.1.1 + source: 1.1.1.2 + protocol: "0x0000" + feature_header_length: 10 + tool: + mpls_pop_all: true + encapsulation: + dot1br_strip: true + vn_tag_strip: true + allowed_vlan: 23 + identity: + tag: qinq + dot1q_dzgre_source: port + truncation: + enabled: true + groups: + - group1 + - group2 + - group3 + dzgre_preserve: true eos_cli: | comment Comment created from eos_cli under ethernet_interfaces.Ethernet1 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml index 2ea480d1b47..04a3cab0a2c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/port-channel-interfaces.yml @@ -113,6 +113,53 @@ port_channel_interfaces: logging: event: link_status: true + switchport: + tap: + allowed_vlan: 25 + default: + groups: + - g2 + - g1 + - g3 + nexthop_groups: + - nexthop_g1 + - nexthop_g3 + - nexthop_g2 + interfaces: + - port-channel10 + - ethernet4 + identity: + port_id: 3 + mpls_pop_all: true + native_vlan: 10 + truncation: + enabled: true + mac_address: + dest: 01:00:00:00:00:00 + src: 01:23:45:67:89:ab + encapsulation: + gre_strip: true + gre: + destination: 1.1.1.1 + protocol: "0x0000" + tool: + mpls_pop_all: true + encapsulation: + dot1br_strip: true + vn_tag_strip: true + allowed_vlan: 23 + identity: + tag: qinq + qinq_dzgre_source: port inner policy + truncation: + enabled: true + size: 160 + groups: + - group1 + - group2 + - group3 + dzgre_preserve: true + - name: Port-Channel100.101 type: l3dot1q logging: @@ -122,6 +169,7 @@ port_channel_interfaces: mtu: 1500 ip_address: 10.1.1.3/31 encapsulation_dot1q_vlan: 101 + - name: Port-Channel100.102 type: l3dot1q logging: @@ -138,6 +186,7 @@ port_channel_interfaces: - name: Port-Channel8 description: to Dev02 Port-channel 8 type: routed + - name: Port-Channel8.101 description: to Dev02 Port-Channel8.101 - VRF-C1 type: l3dot1q diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md index 7ab88329a20..1f927d8fd3e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md @@ -407,6 +407,50 @@ | [        vlans](## "ethernet_interfaces.[].switchport.port_security.vlans") | List, items: Dictionary | | | | | | [          - range](## "ethernet_interfaces.[].switchport.port_security.vlans.[].range") | String | Required, Unique | | | VLAN ID or range(s) of VLAN IDs, <1-4094>.
Example:
- 3
- 1,3
- 1-10
| | [            mac_address_maximum](## "ethernet_interfaces.[].switchport.port_security.vlans.[].mac_address_maximum") | Integer | | | | | + | [      tap](## "ethernet_interfaces.[].switchport.tap") | Dictionary | | | | | + | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        default](## "ethernet_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [          groups](## "ethernet_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | + | [          interfaces](## "ethernet_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | + | [          nexthop_groups](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | + | [            - <str>](## "ethernet_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | + | [        identity](## "ethernet_interfaces.[].switchport.tap.identity") | Dictionary | | | | | + | [          port_id](## "ethernet_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | + | [          inner_port_id](## "ethernet_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        native_vlan](## "ethernet_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | + | [        truncation](## "ethernet_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          size](## "ethernet_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | + | [        mac_address](## "ethernet_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | + | [          src](## "ethernet_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | + | [          dest](## "ethernet_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [        encapsulation](## "ethernet_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | + | [          vxlan_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | + | [          gre_strip](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [          gre](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            destination](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | + | [            source](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | + | [            protocol](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [            feature_header_length](## "ethernet_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [      tool](## "ethernet_interfaces.[].switchport.tool") | Dictionary | | | | | + | [        mpls_pop_all](## "ethernet_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        encapsulation](## "ethernet_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | + | [          dot1br_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | + | [          vn_tag_strip](## "ethernet_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [        allowed_vlan](## "ethernet_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        identity](## "ethernet_interfaces.[].switchport.tool.identity") | Dictionary | | | | | + | [          tag](## "ethernet_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | + | [          dot1q_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | + | [          qinq_dzgre_source](## "ethernet_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | + | [        truncation](## "ethernet_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | + | [          enabled](## "ethernet_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          size](## "ethernet_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | + | [        groups](## "ethernet_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | + | [          - <str>](## "ethernet_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dzgre_preserve](## "ethernet_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    eos_cli](## "ethernet_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. | === "YAML" @@ -1156,6 +1200,99 @@ # - 1-10 - range: mac_address_maximum: + tap: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + default: + + # Tap group names for the interface. + groups: + - + + # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + interfaces: + - + + # Default nexthop-group names. + nexthop_groups: + - + identity: + + # Tap port ID tag. + port_id: + + # Inner tap port ID tag. + inner_port_id: + + # Pop all MPLS labels. + mpls_pop_all: + + # Native VLAN ID when interface is in tap mode. + native_vlan: + truncation: + enabled: + + # Ingress packet truncation size in bytes. + size: + mac_address: + + # MAC address for the source. + src: + + # MAC address for the destination. + dest: + encapsulation: + + # Strip VXLAN encapsulation header. + vxlan_strip: + + # Strip GRE encapsulation header. + gre_strip: + gre: + + # Destination IP address of tunnel packets. + destination: + + # Source IP address of tunnel packets. + source: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: + + # Feature header length in bytes. + feature_header_length: + tool: + + # Pop all MPLS labels. + mpls_pop_all: + encapsulation: + + # Remove a 802.1 BR tag in packet header. + dot1br_strip: + + # Remove a VN-tag in packet header. + vn_tag_strip: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + identity: + tag: + dot1q_dzgre_source: + qinq_dzgre_source: + truncation: + enabled: + + # Egress packet truncation size in bytes. + size: + + # Tool groups for the interface. + groups: + - + + # Preserve the DzGRE header. + dzgre_preserve: # Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. eos_cli: diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md index cf5c246483b..f10054a2e80 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md @@ -245,6 +245,51 @@ | [      egress](## "port_channel_interfaces.[].sflow.egress") | Dictionary | | | | | | [        enable](## "port_channel_interfaces.[].sflow.egress.enable") | Boolean | | | | | | [        unmodified_enable](## "port_channel_interfaces.[].sflow.egress.unmodified_enable") | Boolean | | | | | + | [    switchport](## "port_channel_interfaces.[].switchport") | Dictionary | | | | | + | [      tap](## "port_channel_interfaces.[].switchport.tap") | Dictionary | | | | | + | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tap.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        default](## "port_channel_interfaces.[].switchport.tap.default") | Dictionary | | | | | + | [          groups](## "port_channel_interfaces.[].switchport.tap.default.groups") | List, items: String | | | | Tap group names for the interface. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.groups.[]") | String | | | | | + | [          interfaces](## "port_channel_interfaces.[].switchport.tap.default.interfaces") | List, items: String | | | | Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.interfaces.[]") | String | | | | | + | [          nexthop_groups](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups") | List, items: String | | | | Default nexthop-group names. | + | [            - <str>](## "port_channel_interfaces.[].switchport.tap.default.nexthop_groups.[]") | String | | | | | + | [        identity](## "port_channel_interfaces.[].switchport.tap.identity") | Dictionary | | | | | + | [          port_id](## "port_channel_interfaces.[].switchport.tap.identity.port_id") | Integer | | | Min: 1
Max: 4094 | Tap port ID tag. | + | [          inner_port_id](## "port_channel_interfaces.[].switchport.tap.identity.inner_port_id") | Integer | | | Min: 1
Max: 4094 | Inner tap port ID tag. | + | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tap.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        native_vlan](## "port_channel_interfaces.[].switchport.tap.native_vlan") | Integer | | | Min: 1
Max: 4094 | Native VLAN ID when interface is in tap mode. | + | [        truncation](## "port_channel_interfaces.[].switchport.tap.truncation") | Dictionary | | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tap.truncation.enabled") | Boolean | Required | | | | + | [          size](## "port_channel_interfaces.[].switchport.tap.truncation.size") | Integer | | | Min: 100
Max: 9236 | Ingress packet truncation size in bytes. | + | [        mac_address](## "port_channel_interfaces.[].switchport.tap.mac_address") | Dictionary | | | | | + | [          src](## "port_channel_interfaces.[].switchport.tap.mac_address.src") | String | | | | MAC address for the source. | + | [          dest](## "port_channel_interfaces.[].switchport.tap.mac_address.dest") | String | Required | | | MAC address for the destination. | + | [        encapsulation](## "port_channel_interfaces.[].switchport.tap.encapsulation") | Dictionary | | | | | + | [          vxlan_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.vxlan_strip") | Boolean | | | | Strip VXLAN encapsulation header. | + | [          gre_strip](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre_strip") | Boolean | Required | | | Strip GRE encapsulation header. | + | [          gre](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre") | Dictionary | | | | | + | [            destination](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.destination") | String | | | | Destination IP address of tunnel packets. | + | [            source](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.source") | String | | | | Source IP address of tunnel packets. | + | [            protocol](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.protocol") | String | | | | Protocol type in GRE header.
Protocol range: 0x0000-0xFFFF | + | [            feature_header_length](## "port_channel_interfaces.[].switchport.tap.encapsulation.gre.feature_header_length") | Integer | | | Min: 1
Max: 16 | Feature header length in bytes. | + | [      tool](## "port_channel_interfaces.[].switchport.tool") | Dictionary | | | | | + | [        mpls_pop_all](## "port_channel_interfaces.[].switchport.tool.mpls_pop_all") | Boolean | | | | Pop all MPLS labels. | + | [        encapsulation](## "port_channel_interfaces.[].switchport.tool.encapsulation") | Dictionary | | | | | + | [          dot1br_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.dot1br_strip") | Boolean | | | | Remove a 802.1 BR tag in packet header. | + | [          vn_tag_strip](## "port_channel_interfaces.[].switchport.tool.encapsulation.vn_tag_strip") | Boolean | | | | Remove a VN-tag in packet header. | + | [        allowed_vlan](## "port_channel_interfaces.[].switchport.tool.allowed_vlan") | String | | | | VLAN ID or range of VLAN IDs within range 1-4094. | + | [        identity](## "port_channel_interfaces.[].switchport.tool.identity") | Dictionary | | | | | + | [          tag](## "port_channel_interfaces.[].switchport.tool.identity.tag") | String | | | Valid Values:
- dot1q
- qinq | | + | [          dot1q_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.dot1q_dzgre_source") | String | | | Valid Values:
- policy
- port | | + | [          qinq_dzgre_source](## "port_channel_interfaces.[].switchport.tool.identity.qinq_dzgre_source") | String | | | Valid Values:
- policy inner port
- port inner policy | | + | [        truncation](## "port_channel_interfaces.[].switchport.tool.truncation") | Dictionary | | | | | + | [          enabled](## "port_channel_interfaces.[].switchport.tool.truncation.enabled") | Boolean | Required | | | | + | [          size](## "port_channel_interfaces.[].switchport.tool.truncation.size") | Integer | | | Valid Values:
- 160 | Egress packet truncation size in bytes. | + | [        groups](## "port_channel_interfaces.[].switchport.tool.groups") | List, items: String | | | | Tool groups for the interface. | + | [          - <str>](## "port_channel_interfaces.[].switchport.tool.groups.[]") | String | | | | | + | [        dzgre_preserve](## "port_channel_interfaces.[].switchport.tool.dzgre_preserve") | Boolean | | | | Preserve the DzGRE header. | | [    validate_state](## "port_channel_interfaces.[].validate_state") | Boolean | | | | Set to false to disable interface validation by the `eos_validate_state` role. | | [    eos_cli](## "port_channel_interfaces.[].eos_cli") | String | | | | Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration. | @@ -708,6 +753,100 @@ egress: enable: unmodified_enable: + switchport: + tap: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + default: + + # Tap group names for the interface. + groups: + - + + # Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + interfaces: + - + + # Default nexthop-group names. + nexthop_groups: + - + identity: + + # Tap port ID tag. + port_id: + + # Inner tap port ID tag. + inner_port_id: + + # Pop all MPLS labels. + mpls_pop_all: + + # Native VLAN ID when interface is in tap mode. + native_vlan: + truncation: + enabled: + + # Ingress packet truncation size in bytes. + size: + mac_address: + + # MAC address for the source. + src: + + # MAC address for the destination. + dest: + encapsulation: + + # Strip VXLAN encapsulation header. + vxlan_strip: + + # Strip GRE encapsulation header. + gre_strip: + gre: + + # Destination IP address of tunnel packets. + destination: + + # Source IP address of tunnel packets. + source: + + # Protocol type in GRE header. + # Protocol range: 0x0000-0xFFFF + protocol: + + # Feature header length in bytes. + feature_header_length: + tool: + + # Pop all MPLS labels. + mpls_pop_all: + encapsulation: + + # Remove a 802.1 BR tag in packet header. + dot1br_strip: + + # Remove a VN-tag in packet header. + vn_tag_strip: + + # VLAN ID or range of VLAN IDs within range 1-4094. + allowed_vlan: + identity: + tag: + dot1q_dzgre_source: + qinq_dzgre_source: + truncation: + enabled: + + # Egress packet truncation size in bytes. + size: + + # Tool groups for the interface. + groups: + - + + # Preserve the DzGRE header. + dzgre_preserve: # Set to false to disable interface validation by the `eos_validate_state` role. validate_state: diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 index 2d563d36c6a..8c021117a96 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/ethernet-interfaces.j2 @@ -160,6 +160,98 @@ interface {{ ethernet_interface.name }} {% if ethernet_interface.pvlan_mapping is arista.avd.defined %} switchport pvlan mapping {{ ethernet_interface.pvlan_mapping }} {% endif %} +{% if ethernet_interface.switchport.tap.native_vlan is arista.avd.defined %} + switchport tap native vlan {{ ethernet_interface.switchport.tap.native_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tap.identity.port_id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ ethernet_interface.switchport.tap.identity.port_id %} +{% if ethernet_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ ethernet_interface.switchport.tap.identity.inner_port_id %} +{% endif %} + {{ tap_identity_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ ethernet_interface.switchport.tap.mac_address.dest %} +{% if ethernet_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ ethernet_interface.switchport.tap.mac_address.src %} +{% endif %} + {{ tap_mac_address_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} + switchport tap encapsulation vxlan strip +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} + switchport tap encapsulation gre strip +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or + ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ ethernet_interface.switchport.tap.encapsulation.gre.destination %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ ethernet_interface.switchport.tap.encapsulation.gre.source %} +{% endif %} +{% endif %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ ethernet_interface.switchport.tap.encapsulation.gre.protocol %} +{% if ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ ethernet_interface.switchport.tap.encapsulation.gre.feature_header_length %} +{% endif %} +{% endif %} + {{ tap_encapsulation_cli }} strip +{% endif %} +{% if ethernet_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} + switchport tool mpls pop all +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} + switchport tool encapsulation vn-tag strip +{% endif %} +{% if ethernet_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} + switchport tool encapsulation dot1br strip +{% endif %} +{% if ethernet_interface.switchport.tap.allowed_vlan is arista.avd.defined %} + switchport tap allowed vlan {{ ethernet_interface.switchport.tap.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.allowed_vlan is arista.avd.defined %} + switchport tool allowed vlan {{ ethernet_interface.switchport.tool.allowed_vlan }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.tag is arista.avd.defined %} + switchport tool identity {{ ethernet_interface.switchport.tool.identity.tag }} +{% endif %} +{% if ethernet_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} + switchport tool identity dot1q source dzgre {{ ethernet_interface.switchport.tool.identity.dot1q_dzgre_source }} +{% elif ethernet_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} + switchport tool identity qinq source dzgre {{ ethernet_interface.switchport.tool.identity.qinq_dzgre_source }} +{% endif %} +{% if ethernet_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if ethernet_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ ethernet_interface.switchport.tap.truncation.size %} +{% endif %} + {{ tap_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} + {{ tool_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.groups is arista.avd.defined %} + switchport tap default group {{ ethernet_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} +{% endif %} +{% if ethernet_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} + switchport tap default nexthop-group {{ ethernet_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} +{% endif %} +{% for interface in ethernet_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} + switchport tap default interface {{ interface }} +{% endfor %} +{% if ethernet_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = ethernet_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} + switchport tool group set {{ tool_groups }} +{% endif %} +{% if ethernet_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} + switchport tool dzgre preserve +{% endif %} {% if ethernet_interface.l2_protocol.encapsulation_dot1q_vlan is arista.avd.defined %} l2-protocol encapsulation dot1q vlan {{ ethernet_interface.l2_protocol.encapsulation_dot1q_vlan }} {% endif %} diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 index 3c506c9764a..ea125f86094 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/port-channel-interfaces.j2 @@ -108,6 +108,98 @@ interface {{ port_channel_interface.name }} {{ vlan_translation_cli }} {% endif %} {% endfor %} +{% if port_channel_interface.switchport.tap.native_vlan is arista.avd.defined %} + switchport tap native vlan {{ port_channel_interface.switchport.tap.native_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tap.identity.port_id is arista.avd.defined %} +{% set tap_identity_cli = "switchport tap identity " ~ port_channel_interface.switchport.tap.identity.port_id %} +{% if port_channel_interface.switchport.tap.identity.inner_port_id is arista.avd.defined %} +{% set tap_identity_cli = tap_identity_cli ~ " inner " ~ port_channel_interface.switchport.tap.identity.inner_port_id %} +{% endif %} + {{ tap_identity_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.mac_address.dest is arista.avd.defined %} +{% set tap_mac_address_cli = "switchport tap mac-address dest " ~ port_channel_interface.switchport.tap.mac_address.dest %} +{% if port_channel_interface.switchport.tap.mac_address.src is arista.avd.defined %} +{% set tap_mac_address_cli = tap_mac_address_cli ~ " src " ~ port_channel_interface.switchport.tap.mac_address.src %} +{% endif %} + {{ tap_mac_address_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.vxlan_strip is arista.avd.defined(true) %} + switchport tap encapsulation vxlan strip +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre_strip is arista.avd.defined(true) %} + switchport tap encapsulation gre strip +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined or + port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.destination is arista.avd.defined %} +{% set tap_encapsulation_cli = "switchport tap encapsulation gre destination " ~ port_channel_interface.switchport.tap.encapsulation.gre.destination %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.source is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " source " ~ port_channel_interface.switchport.tap.encapsulation.gre.source %} +{% endif %} +{% endif %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.protocol is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " protocol " ~ port_channel_interface.switchport.tap.encapsulation.gre.protocol %} +{% if port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length is arista.avd.defined %} +{% set tap_encapsulation_cli = tap_encapsulation_cli ~ " feature header length " ~ port_channel_interface.switchport.tap.encapsulation.gre.feature_header_length %} +{% endif %} +{% endif %} + {{ tap_encapsulation_cli }} strip +{% endif %} +{% if port_channel_interface.switchport.tool.mpls_pop_all is arista.avd.defined(true) %} + switchport tool mpls pop all +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.vn_tag_strip is arista.avd.defined(true) %} + switchport tool encapsulation vn-tag strip +{% endif %} +{% if port_channel_interface.switchport.tool.encapsulation.dot1br_strip is arista.avd.defined(true) %} + switchport tool encapsulation dot1br strip +{% endif %} +{% if port_channel_interface.switchport.tap.allowed_vlan is arista.avd.defined %} + switchport tap allowed vlan {{ port_channel_interface.switchport.tap.allowed_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tool.allowed_vlan is arista.avd.defined %} + switchport tool allowed vlan {{ port_channel_interface.switchport.tool.allowed_vlan }} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.tag is arista.avd.defined %} + switchport tool identity {{ port_channel_interface.switchport.tool.identity.tag }} +{% endif %} +{% if port_channel_interface.switchport.tool.identity.dot1q_dzgre_source is arista.avd.defined %} + switchport tool identity dot1q source dzgre {{ port_channel_interface.switchport.tool.identity.dot1q_dzgre_source }} +{% elif port_channel_interface.switchport.tool.identity.qinq_dzgre_source is arista.avd.defined %} + switchport tool identity qinq source dzgre {{ port_channel_interface.switchport.tool.identity.qinq_dzgre_source }} +{% endif %} +{% if port_channel_interface.switchport.tap.truncation.enabled is arista.avd.defined %} +{% set tap_truncation_cli = "switchport tap truncation" %} +{% if port_channel_interface.switchport.tap.truncation.size is arista.avd.defined %} +{% set tap_truncation_cli = tap_truncation_cli ~ " " ~ port_channel_interface.switchport.tap.truncation.size %} +{% endif %} + {{ tap_truncation_cli }} +{% endif %} +{% if ethernet_interface.switchport.tool.truncation.enabled is arista.avd.defined %} +{% set tool_truncation_cli = "switchport tool truncation" %} +{% if ethernet_interface.switchport.tool.truncation.size is arista.avd.defined %} +{% set tool_truncation_cli = tool_truncation_cli ~ " " ~ ethernet_interface.switchport.tool.truncation.size %} +{% endif %} + {{ tool_truncation_cli }} +{% endif %} +{% if port_channel_interface.switchport.tap.default.groups is arista.avd.defined %} + switchport tap default group {{ port_channel_interface.switchport.tap.default.groups | arista.avd.natural_sort | join(" group ") }} +{% endif %} +{% if port_channel_interface.switchport.tap.default.nexthop_groups is arista.avd.defined %} + switchport tap default nexthop-group {{ port_channel_interface.switchport.tap.default.nexthop_groups | arista.avd.natural_sort | join(" ") }} +{% endif %} +{% for interface in port_channel_interface.switchport.tap.default.interfaces | arista.avd.natural_sort %} + switchport tap default interface {{ interface }} +{% endfor %} +{% if port_channel_interface.switchport.tool.groups is arista.avd.defined %} +{% set tool_groups = port_channel_interface.switchport.tool.groups | arista.avd.natural_sort | join(" ") %} + switchport tool group set {{ tool_groups }} +{% endif %} +{% if port_channel_interface.switchport.tool.dzgre_preserve is arista.avd.defined(true) %} + switchport tool dzgre preserve +{% endif %} {% if port_channel_interface.l2_protocol.encapsulation_dot1q_vlan is arista.avd.defined %} l2-protocol encapsulation dot1q vlan {{ port_channel_interface.l2_protocol.encapsulation_dot1q_vlan }} {% 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 index c3131464499..86ba5af5b12 100644 --- 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 @@ -5723,6 +5723,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -15817,6 +16116,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", 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 1737cb2fe56..fc0b9e5c9c2 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 @@ -3439,6 +3439,173 @@ keys: type: int convert_types: - str + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, + Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF' + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface @@ -9319,6 +9486,176 @@ keys: type: bool unmodified_enable: type: bool + switchport: + type: dict + keys: + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, + Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: 'Protocol type in GRE header. + + Protocol range: 0x0000-0xFFFF' + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. validate_state: type: bool description: Set to false to disable interface validation by the `eos_validate_state` diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml index d9198550746..449229d0bf3 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/ethernet_interfaces.schema.yml @@ -1425,6 +1425,172 @@ keys: type: int convert_types: - str + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. eos_cli: type: str description: Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration. diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml index 78deeb0d0db..1250e5b00b4 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/port_channel_interfaces.schema.yml @@ -837,6 +837,175 @@ keys: type: bool unmodified_enable: type: bool + switchport: + type: dict + keys: + tap: + type: dict + keys: + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + default: + type: dict + keys: + groups: + description: Tap group names for the interface. + type: list + items: + type: str + interfaces: + description: Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel. + type: list + items: + type: str + nexthop_groups: + type: list + description: Default nexthop-group names. + items: + type: str + identity: + type: dict + keys: + port_id: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Tap port ID tag. + inner_port_id: + description: Inner tap port ID tag. + type: int + convert_types: + - str + min: 1 + max: 4094 + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + native_vlan: + type: int + convert_types: + - str + min: 1 + max: 4094 + description: Native VLAN ID when interface is in tap mode. + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Ingress packet truncation size in bytes. + type: int + convert_types: + - str + min: 100 + max: 9236 + mac_address: + type: dict + keys: + src: + type: str + description: MAC address for the source. + dest: + type: str + required: true + description: MAC address for the destination. + encapsulation: + type: dict + keys: + vxlan_strip: + type: bool + description: Strip VXLAN encapsulation header. + gre_strip: + type: bool + required: true + description: Strip GRE encapsulation header. + gre: + type: dict + keys: + destination: + description: Destination IP address of tunnel packets. + type: str + source: + description: Source IP address of tunnel packets. + type: str + protocol: + type: str + description: |- + Protocol type in GRE header. + Protocol range: 0x0000-0xFFFF + feature_header_length: + description: Feature header length in bytes. + type: int + convert_types: + - str + min: 1 + max: 16 + tool: + type: dict + keys: + mpls_pop_all: + type: bool + description: Pop all MPLS labels. + encapsulation: + type: dict + keys: + dot1br_strip: + type: bool + description: Remove a 802.1 BR tag in packet header. + vn_tag_strip: + type: bool + description: Remove a VN-tag in packet header. + allowed_vlan: + type: str + convert_types: + - int + description: VLAN ID or range of VLAN IDs within range 1-4094. + identity: + type: dict + keys: + tag: + type: str + valid_values: + - dot1q + - qinq + dot1q_dzgre_source: + type: str + valid_values: + - policy + - port + qinq_dzgre_source: + type: str + valid_values: + - policy inner port + - port inner policy + truncation: + type: dict + keys: + enabled: + type: bool + required: true + size: + description: Egress packet truncation size in bytes. + type: int + convert_types: + - str + valid_values: + - 160 + groups: + type: list + items: + type: str + description: Tool groups for the interface. + dzgre_preserve: + type: bool + description: Preserve the DzGRE header. validate_state: type: bool description: Set to false to disable interface validation by the `eos_validate_state` role. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json index 51d1c306dc1..a99b3e571f6 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json @@ -11254,6 +11254,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -14144,6 +14443,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -17051,6 +17659,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -23602,6 +24509,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false, @@ -33696,6 +34902,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -52322,6 +53837,315 @@ }, "title": "Sflow" }, + "switchport": { + "type": "object", + "properties": { + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Switchport" + }, "validate_state": { "type": "boolean", "description": "Set to false to disable interface validation by the `eos_validate_state` role.", @@ -55229,6 +57053,305 @@ "^_.+$": {} }, "title": "Port Security" + }, + "tap": { + "type": "object", + "properties": { + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "default": { + "type": "object", + "properties": { + "groups": { + "description": "Tap group names for the interface.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Groups" + }, + "interfaces": { + "description": "Interfaces like - Ethernet, InternalRecirc, Port-Channel, Recirc-Channel.", + "type": "array", + "items": { + "type": "string" + }, + "title": "Interfaces" + }, + "nexthop_groups": { + "type": "array", + "description": "Default nexthop-group names.", + "items": { + "type": "string" + }, + "title": "Nexthop Groups" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Default" + }, + "identity": { + "type": "object", + "properties": { + "port_id": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Tap port ID tag.", + "title": "Port ID" + }, + "inner_port_id": { + "description": "Inner tap port ID tag.", + "type": "integer", + "minimum": 1, + "maximum": 4094, + "title": "Inner Port ID" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "native_vlan": { + "type": "integer", + "minimum": 1, + "maximum": 4094, + "description": "Native VLAN ID when interface is in tap mode.", + "title": "Native VLAN" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Ingress packet truncation size in bytes.", + "type": "integer", + "minimum": 100, + "maximum": 9236, + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "mac_address": { + "type": "object", + "properties": { + "src": { + "type": "string", + "description": "MAC address for the source.", + "title": "Src" + }, + "dest": { + "type": "string", + "description": "MAC address for the destination.", + "title": "Dest" + } + }, + "required": [ + "dest" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "MAC Address" + }, + "encapsulation": { + "type": "object", + "properties": { + "vxlan_strip": { + "type": "boolean", + "description": "Strip VXLAN encapsulation header.", + "title": "VxLAN Strip" + }, + "gre_strip": { + "type": "boolean", + "description": "Strip GRE encapsulation header.", + "title": "Gre Strip" + }, + "gre": { + "type": "object", + "properties": { + "destination": { + "description": "Destination IP address of tunnel packets.", + "type": "string", + "title": "Destination" + }, + "source": { + "description": "Source IP address of tunnel packets.", + "type": "string", + "title": "Source" + }, + "protocol": { + "type": "string", + "description": "Protocol type in GRE header.\nProtocol range: 0x0000-0xFFFF", + "title": "Protocol" + }, + "feature_header_length": { + "description": "Feature header length in bytes.", + "type": "integer", + "minimum": 1, + "maximum": 16, + "title": "Feature Header Length" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Gre" + } + }, + "required": [ + "gre_strip" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tap" + }, + "tool": { + "type": "object", + "properties": { + "mpls_pop_all": { + "type": "boolean", + "description": "Pop all MPLS labels.", + "title": "MPLS Pop All" + }, + "encapsulation": { + "type": "object", + "properties": { + "dot1br_strip": { + "type": "boolean", + "description": "Remove a 802.1 BR tag in packet header.", + "title": "dot1br Strip" + }, + "vn_tag_strip": { + "type": "boolean", + "description": "Remove a VN-tag in packet header.", + "title": "VN Tag Strip" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Encapsulation" + }, + "allowed_vlan": { + "type": "string", + "description": "VLAN ID or range of VLAN IDs within range 1-4094.", + "title": "Allowed VLAN" + }, + "identity": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "enum": [ + "dot1q", + "qinq" + ], + "title": "Tag" + }, + "dot1q_dzgre_source": { + "type": "string", + "enum": [ + "policy", + "port" + ], + "title": "Dot1Q Dzgre Source" + }, + "qinq_dzgre_source": { + "type": "string", + "enum": [ + "policy inner port", + "port inner policy" + ], + "title": "Qinq Dzgre Source" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Identity" + }, + "truncation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled" + }, + "size": { + "description": "Egress packet truncation size in bytes.", + "type": "integer", + "enum": [ + 160 + ], + "title": "Size" + } + }, + "required": [ + "enabled" + ], + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Truncation" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tool groups for the interface.", + "title": "Groups" + }, + "dzgre_preserve": { + "type": "boolean", + "description": "Preserve the DzGRE header.", + "title": "Dzgre Preserve" + } + }, + "additionalProperties": false, + "patternProperties": { + "^_.+$": {} + }, + "title": "Tool" } }, "additionalProperties": false,