# Copyright (c) 2024 Arista Networks, Inc.
# Use of this source code is governed by the Apache License 2.0
# that can be found in the LICENSE file.
# yaml-language-server: $schema=../../../plugins/plugin_utils/schema/avd_meta_schema.json
# Line above is used by RedHat's YAML Schema vscode extension
# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters.
$id: eos_cli_config_gen
$schema: avd_meta_schema
type: dict
allow_other_keys: true
keys:
  aaa_accounting:
    type: dict
    keys:
      exec:
        type: dict
        keys:
          console:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name.
                type: str
              logging:
                type: bool
          default:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name.
                type: str
              logging:
                type: bool
      system:
        type: dict
        keys:
          default:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name.
                type: str
      dot1x:
        type: dict
        keys:
          default:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - start-stop
                - stop-only
              group:
                description: Group Name.
                type: str
      commands:
        type: dict
        keys:
          console:
            type: list
            items:
              type: dict
              keys:
                commands:
                  type: str
                  convert_types:
                  - int
                  description: Privilege level 'all' or 0-15.
                type:
                  type: str
                  valid_values:
                  - none
                  - start-stop
                  - stop-only
                group:
                  description: Group Name.
                  type: str
                logging:
                  type: bool
          default:
            type: list
            items:
              type: dict
              keys:
                commands:
                  type: str
                  convert_types:
                  - int
                  description: Privilege level 'all' or 0-15.
                type:
                  type: str
                  valid_values:
                  - none
                  - start-stop
                  - stop-only
                group:
                  description: Group Name.
                  type: str
                logging:
                  type: bool
  aaa_authentication:
    type: dict
    keys:
      login:
        type: dict
        keys:
          default:
            type: str
            description: 'Login authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
          console:
            type: str
            description: 'Console authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      enable:
        type: dict
        keys:
          default:
            type: str
            description: 'Enable authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      dot1x:
        type: dict
        keys:
          default:
            type: str
            description: '802.1x authentication method(s) as a string.

              Examples:

              - "group radius"

              - "group MYGROUP group radius"

              '
      policies:
        type: dict
        keys:
          on_failure_log:
            type: bool
          on_success_log:
            type: bool
          local:
            type: dict
            keys:
              allow_nopassword:
                type: bool
          lockout:
            type: dict
            keys:
              failure:
                type: int
                min: 1
                max: 255
                convert_types:
                - str
              duration:
                type: int
                min: 1
                max: 4294967295
                convert_types:
                - str
              window:
                type: int
                min: 1
                max: 4294967295
                convert_types:
                - str
  aaa_authorization:
    type: dict
    keys:
      policy:
        type: dict
        keys:
          local_default_role:
            type: str
      exec:
        type: dict
        keys:
          default:
            type: str
            description: 'Exec authorization method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      config_commands:
        type: bool
      serial_console:
        type: bool
      dynamic:
        type: dict
        keys:
          dot1x_additional_groups:
            type: list
            min_length: 1
            items:
              type: str
      commands:
        type: dict
        keys:
          all_default:
            type: str
            description: 'Command authorization method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group tacacs+ group MYGROUP local

              '
          privilege:
            type: list
            items:
              type: dict
              keys:
                level:
                  type: str
                  description: Privilege level(s) 0-15.
                  convert_types:
                  - int
                default:
                  type: str
                  description: 'Command authorization method(s) as a string.

                    Examples:

                    - "group tacacs+ local"

                    - "group MYGROUP none"

                    - "group tacacs+ group MYGROUP local"

                    '
  aaa_root:
    type: dict
    keys:
      secret:
        type: dict
        keys:
          sha512_password:
            type: str
  aaa_server_groups:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Group name.
          type: str
        type:
          type: str
          valid_values:
          - tacacs+
          - radius
          - ldap
        servers:
          type: list
          items:
            type: dict
            keys:
              server:
                type: str
                description: Hostname or IP address.
              vrf:
                type: str
                description: VRF name.
                convert_types:
                - int
  access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IP Extended Access-Lists (legacy model)
    items:
      type: dict
      keys:
        name:
          type: str
          description: Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "deny ip any any"

                  '
  address_locking:
    type: dict
    keys:
      dhcp_servers_ipv4:
        type: list
        items:
          type: str
          description: DHCP server IPv4 address.
      disabled:
        type: bool
        description: Disable IP locking on configured ports.
      leases:
        type: list
        items:
          type: dict
          keys:
            ip:
              type: str
              required: true
              description: IP address.
            mac:
              type: str
              required: true
              description: MAC address (hhhh.hhhh.hhhh or hh:hh:hh:hh:hh:hh).
      local_interface:
        type: str
      locked_address:
        type: dict
        keys:
          expiration_mac_disabled:
            type: bool
            description: Configure deauthorizing locked addresses upon MAC aging out.
          ipv4_enforcement_disabled:
            type: bool
            description: Configure enforcement for locked IPv4 addresses.
          ipv6_enforcement_disabled:
            type: bool
            description: Configure enforcement for locked IPv6 addresses.
  agents:
    type: list
    primary_key: name
    items:
      type: dict
      keys:
        name:
          type: str
          description: Agent name.
        environment_variables:
          type: list
          primary_key: name
          min_length: 1
          items:
            type: dict
            keys:
              name:
                type: str
                description: Environment variable name.
              value:
                type: str
                convert_types:
                - int
                - bool
                required: true
                description: Environment variable value.
  aliases:
    type: str
    description: "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases:
      |\n  alias wr copy running-config startup-config\n  alias siib show ip interface
      brief\n```\n"
  application_traffic_recognition:
    type: dict
    description: Application traffic recognition configuration.
    keys:
      categories:
        type: list
        description: List of categories.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Category name.
            applications:
              type: list
              description: List of applications.
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Application name.
                  service:
                    type: str
                    description: 'Service Name.

                      Specific service to target for this application.

                      If no service is specified, all supported services of the application
                      are matched.

                      Not all valid values are valid for all applications, check on
                      EOS CLI.'
                    valid_values:
                    - audio-video
                    - chat
                    - default
                    - file-transfer
                    - networking-protocols
                    - peer-to-peer
                    - software-update
      field_sets:
        type: dict
        keys:
          l4_ports:
            type: list
            primary_key: name
            description: L4 port field-set.
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: L4 port field-set name.
                port_values:
                  type: list
                  items:
                    type: str
                    convert_types:
                    - int
                    description: 'Port values or range of port values.

                      Port values are between 0 and 65535.'
          ipv4_prefixes:
            type: list
            primary_key: name
            description: IPv4 prefix field set.
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv4 prefix field-set name.
                prefix_values:
                  type: list
                  items:
                    type: str
                    description: IP prefix (ex 1.2.3.0/24).
      applications:
        type: dict
        keys:
          ipv4_applications:
            type: list
            description: List of user defined IPv4 applications. The name should be
              unique over all defined applications (ipv4 and l4).
            primary_key: name
            items:
              type: dict
              $ref: eos_cli_config_gen#/$defs/application_traffic_recognition_application
              keys:
                name:
                  type: str
                  description: Application name.
                src_prefix_set_name:
                  type: str
                  description: Source prefix set name.
                dest_prefix_set_name:
                  type: str
                  description: Destination prefix set name.
          l4_applications:
            type: list
            description: List of user defined L4 applications. The name should be
              unique over all defined applications (ipv4 and l4).
            primary_key: name
            items:
              type: dict
              $ref: eos_cli_config_gen#/$defs/application_traffic_recognition_application
              keys:
                name:
                  type: str
                  description: Application name.
      application_profiles:
        type: list
        description: Group of applications.
        items:
          type: dict
          keys:
            name:
              type: str
              description: Application Profile name.
            applications:
              type: list
              description: List of applications part of the application profile.
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Application Name.
                  service:
                    type: str
                    description: 'Service Name.

                      Specific service to target for this application.

                      If no service is specified, all supported services of the application
                      are matched.

                      Not all valid values are valid for all applications, check on
                      EOS CLI.'
                    valid_values:
                    - audio-video
                    - chat
                    - default
                    - file-transfer
                    - networking-protocols
                    - peer-to-peer
                    - software-update
            application_transports:
              type: list
              description: List of transport protocols.
              items:
                type: str
                description: Transport name.
                valid_values:
                - http
                - https
                - udp
                - tcp
                - ip
                - ip6
                - ssl
                - rtp
                - sctp
                - quic
            categories:
              type: list
              description: Categories under this application profile.
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Name of a category.
                  service:
                    type: str
                    description: 'Service Name.

                      Specific service to target for this application.

                      If no service is specified, all supported services of the application
                      are matched.

                      Not all valid values are valid for all applications, check on
                      EOS CLI.'
                    valid_values:
                    - audio-video
                    - chat
                    - default
                    - file-transfer
                    - networking-protocols
                    - peer-to-peer
                    - software-update
  arp:
    type: dict
    keys:
      aging:
        type: dict
        keys:
          timeout_default:
            description: Timeout in seconds.
            type: int
            min: 60
            max: 65535
      static_entries:
        type: list
        description: Static ARP entries.
        items:
          type: dict
          keys:
            ipv4_address:
              type: str
              required: true
              description: ARP entry IPv4 address.
            vrf:
              type: str
              convert_types:
              - int
              description: ARP entry VRF.
            mac_address:
              type: str
              description: ARP entry MAC address.
              required: true
              pattern: ^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$
  as_path:
    type: dict
    keys:
      regex_mode:
        type: str
        valid_values:
        - asn
        - string
      access_lists:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Access List Name.
            entries:
              type: list
              items:
                type: dict
                keys:
                  type:
                    type: str
                    valid_values:
                    - permit
                    - deny
                  match:
                    type: str
                    description: Regex To Match.
                  origin:
                    type: str
                    valid_values:
                    - any
                    - egp
                    - igp
                    - incomplete
                    default: any
  avd_data_conversion_mode:
    documentation_options:
      table: role-input-validation
    type: str
    valid_values:
    - disabled
    - error
    - warning
    - info
    - debug
    - quiet
    default: debug
    description: 'Conversion Mode for AVD input data conversion.

      Input data conversion will perform type conversion of input variables as defined
      in the schema.

      The type conversion is intended to help the user to identify minor issues with
      the input data, while still allowing the data to be validated.

      During conversion, messages will generated with information about the host(s)
      and key(s) which required conversion.

      "disabled" means that conversion will not run - avoid this since conversion
      is also handling data deprecation and upgrade.

      "error" will produce error messages and fail the task.

      "warning" will produce warning messages.

      "info" will produce regular log messages.

      "debug" will produce hidden debug messages viewable with -v.

      "quiet" will not produce any messages.

      '
  avd_data_validation_mode:
    documentation_options:
      table: role-input-validation
    type: str
    valid_values:
    - disabled
    - error
    - warning
    - info
    - debug
    default: warning
    description: 'Validation Mode for AVD input data validation.

      Input data validation will validate the input variables according to the schema.

      During validation, messages will generated with information about the host(s)
      and key(s) which failed validation.

      "disabled" means that validation will not run.

      "error" will produce error messages and fail the task.

      "warning" will produce warning messages.

      "info" will produce regular log messages.

      "debug" will produce hidden debug messages viewable with -v.

      '
  banners:
    type: dict
    keys:
      login:
        type: str
        description: Multiline string ending with EOF on the last line.
      motd:
        type: str
        description: Multiline string ending with EOF on the last line.
  bgp_groups:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Group Name.
        vrf:
          type: str
          convert_types:
          - int
        neighbors:
          type: list
          items:
            type: str
        bgp_maintenance_profiles:
          type: list
          items:
            type: str
            description: Profile Name.
  boot:
    display_name: System Boot Settings
    description: 'Set the Aboot password.

      '
    type: dict
    keys:
      secret:
        type: dict
        keys:
          hash_algorithm:
            type: str
            valid_values:
            - md5
            - sha512
            default: sha512
          key:
            description: Hashed Password.
            type: str
  class_maps:
    type: dict
    display_name: QOS Class-maps
    keys:
      pbr:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Class-Map Name.
            ip:
              type: dict
              keys:
                access_group:
                  type: str
                  description: Standard Access-List Name.
                  convert_types:
                  - int
      qos:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Class-Map Name.
            vlan:
              type: str
              convert_types:
              - int
              description: VLAN value(s) or range(s) of VLAN values.
            cos:
              type: str
              convert_types:
              - int
              description: CoS value(s) or range(s) of CoS values.
            ip:
              type: dict
              keys:
                access_group:
                  type: str
                  description: IPv4 Access-List Name.
                  convert_types:
                  - int
            ipv6:
              type: dict
              keys:
                access_group:
                  type: str
                  description: IPv6 Access-List Name.
                  convert_types:
                  - int
  clock:
    type: dict
    keys:
      timezone:
        type: str
  community_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: Community Lists (legacy model)
    items:
      type: dict
      keys:
        name:
          type: str
          description: Community-list Name.
        action:
          type: str
          required: true
          description: 'Action as string.

            Example: "permit GSHUT 65123:123"

            '
  config_comment:
    type: str
    description: 'Add a comment to provide information about the configuration.

      This comment will be rendered at the top of the generated configuration.'
  custom_templates:
    type: list
    display_name: Extensibility with Custom Templates
    description: "- Custom templates can be added below the playbook directory.\n-
      If a location above the directory is desired, a symbolic link can be used.\n-
      Example under the `playbooks` directory create symbolic link with the following
      command:\n\n  ```bash\n  ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n
      \ ```\n\n- The output will be rendered at the end of the configuration.\n- The
      order of custom templates in the list can be important if they overlap.\n- It
      is recommended to use a `!` delimiter at the top of each custom template.\n\nAdd
      `custom_templates` to group/host variables:\n"
    items:
      type: str
      description: Template relative path below playbook directory.
  cvx:
    type: dict
    description: CVX server features are not supported on physical switches. See `management_cvx`
      for client configurations.
    keys:
      shutdown:
        type: bool
      peer_hosts:
        type: list
        items:
          type: str
          description: IP address or hostname.
      services:
        type: dict
        keys:
          mcs:
            type: dict
            keys:
              redis:
                type: dict
                keys:
                  password:
                    type: str
                    description: Hashed password using the password_type.
                  password_type:
                    type: str
                    convert_types:
                    - int
                    valid_values:
                    - '0'
                    - '7'
                    - 8a
                    default: '7'
              shutdown:
                type: bool
          vxlan:
            type: dict
            description: VXLAN Controller service.
            keys:
              shutdown:
                type: bool
              vtep_mac_learning:
                type: str
                valid_values:
                - control-plane
                - data-plane
  daemon_terminattr:
    type: dict
    description: "You can either provide a list of IPs/FQDNs to target on-premise
      Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming
      to multiple clusters both on-prem and cloud service is supported.\n\n!!! note\n
      \   For TerminAttr version recommendation and EOS compatibility matrix, please
      refer to the latest TerminAttr Release Notes\n    which always contain the latest
      recommended versions and minimum required versions per EOS release.\n"
    keys:
      cvaddrs:
        type: list
        description: 'Streaming address(es) for CloudVision single cluster.

          - TCP 9910 is used for CV on-prem

          - TCP 443 is used for CV as a Service

          '
        items:
          type: str
          description: Server address in the format `<ip/fqdn>:<port>`.
      clusters:
        type: list
        description: 'Multiple CloudVision clusters.

          '
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Cluster Name.
            cvaddrs:
              type: list
              description: 'Streaming address(es) for CloudVision cluster.

                - TCP 9910 is used for CV on-prem

                - TCP 443 is used for CV as a Service

                '
              items:
                type: str
                description: Server address in the format `<ip/fqdn>:<port>`.
            cvauth:
              type: dict
              description: 'Authentication scheme used to connect to CloudVision.

                '
              keys:
                method:
                  type: str
                  valid_values:
                  - token
                  - token-secure
                  - key
                  - certs
                key:
                  type: str
                token_file:
                  type: str
                  description: 'Token file path.

                    e.g. "/tmp/token"

                    '
                cert_file:
                  type: str
                  description: 'Client certificate file path.

                    e.g. "/persist/secure/ssl/terminattr/primary/certs/client.crt"

                    '
                ca_file:
                  type: str
                  description: 'CA certificate file path (on-prem only).

                    e.g. "/persist/secure/ssl/terminattr/primary/certs/ca.crt"

                    '
                key_file:
                  type: str
                  description: 'Client certificate key file path.

                    e.g. "/persist/secure/ssl/terminattr/primary/keys/client.key"

                    '
            cvobscurekeyfile:
              type: bool
              description: 'Encrypt the private key used for authentication to CloudVision.

                '
            cvproxy:
              type: str
              description: 'Proxy server through which CloudVision is reachable. Useful
                when the CloudVision server is hosted in the cloud.

                The expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`.
                Available as of TerminAttr v1.13.0.

                '
            cvsourceip:
              type: str
              description: 'Set source IP address in case of in-band management.

                '
            cvsourceintf:
              type: str
              description: 'Set source interface in case of in-band management. Available
                as of TerminAttr v1.23.0.

                The interface name is case sensitive and has to match the interface
                name in the running-config, e.g.:Vlan100.

                '
            cvvrf:
              type: str
              description: 'The VRF to use to connect to CloudVision.

                '
              convert_types:
              - int
      cvauth:
        type: dict
        description: 'Authentication scheme used to connect to CloudVision.

          '
        keys:
          method:
            type: str
            valid_values:
            - token
            - token-secure
            - key
            - certs
          key:
            type: str
          token_file:
            type: str
            description: 'Token file path.

              e.g. "/tmp/token"

              '
          cert_file:
            type: str
            description: 'Client certificate file path.

              e.g. "/persist/secure/ssl/terminattr/primary/certs/client.crt"

              '
          ca_file:
            type: str
            description: 'CA certificate file path (on-prem only).

              e.g. "/persist/secure/ssl/terminattr/primary/certs/ca.crt"

              '
          key_file:
            type: str
            description: 'Client certificate key file path.

              e.g. "/persist/secure/ssl/terminattr/primary/keys/client.key"

              '
      cvobscurekeyfile:
        type: bool
        description: 'Encrypt the private key used for authentication to CloudVision.

          '
      cvproxy:
        type: str
        description: 'Proxy server through which CloudVision is reachable. Useful
          when the CloudVision server is hosted in the cloud.

          The expected form is http://[user:password@]ip:port, e.g.: `http://arista:arista@10.83.12.78:3128`.
          Available as of TerminAttr v1.13.0.

          '
      cvsourceip:
        type: str
        description: 'Set source IP address in case of in-band management.

          '
      cvsourceintf:
        type: str
        description: 'Set source interface in case of in-band management.

          The interface name is case sensitive and has to match the interface name
          in the running-config, e.g.:Vlan100.

          '
      cvvrf:
        type: str
        description: 'The VRF to use to connect to CloudVision.

          '
        convert_types:
        - int
      cvgnmi:
        type: bool
        description: 'Stream states from EOS gNMI servers (Openconfig) to CloudVision.
          Available as of TerminAttr v1.13.1.

          '
      disable_aaa:
        type: bool
        description: 'Disable AAA authorization and accounting.

          When setting this flag, all commands pushed from CloudVision are applied
          directly to the CLI without authorization.

          '
      grpcaddr:
        type: str
        description: 'Set the gRPC server address, the default is 127.0.0.1:6042.

          e.g. "MGMT/0.0.0.0:6042"

          '
      grpcreadonly:
        type: bool
        description: 'gNMI read-only mode - Disable gnmi.Set().

          '
      ingestexclude:
        type: str
        description: 'Exclude paths from Sysdb on the ingest side.

          e.g. "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent"

          '
      smashexcludes:
        type: str
        description: 'Exclude paths from the shared memory table.

          e.g. "ale,flexCounter,hardware,kni,pulse,strata"

          '
      taillogs:
        type: str
        description: 'Enable log file collection; /var/log/messages is streamed by
          default if no path is set.

          e.g. "/var/log/messages"

          '
      ecodhcpaddr:
        type: str
        description: 'ECO DHCP Collector address or ECO DHCP Fingerprint listening
          address in standalone mode (default "127.0.0.1:67").

          '
      ipfix:
        type: bool
        description: 'Enable IPFIX provider (TerminAttr default is true).

          This flag is enabled by default and does not have to be added to the daemon
          configuration.

          '
      ipfixaddr:
        type: str
        description: 'ECO IPFIX Collector address to listen on to receive IPFIX packets
          (TerminAttr default "127.0.0.1:4739").

          '
      sflow:
        type: bool
        description: 'Enable sFlow provider (TerminAttr default is true).

          '
      sflowaddr:
        type: str
        description: 'ECO sFlow Collector address to listen on to receive sFlow packets
          (TerminAttr default "127.0.0.1:6343").

          '
      cvconfig:
        type: bool
        description: 'Subscribe to dynamic device configuration from CloudVision (TerminAttr
          default is false).

          '
      cvcompression:
        deprecation:
          warning: true
          remove_in_version: v5.0.0
        type: str
        description: 'The default compression scheme when streaming to CloudVision
          is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.

          There is no need to change the compression scheme.

          '
  daemons:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: Custom Daemons
    description: This will add a daemon to the eos configuration that is most useful
      when trying to run OpenConfig clients like ocprometheus.
    items:
      type: dict
      keys:
        name:
          type: str
          description: Daemon Name.
        exec:
          type: str
          required: true
          description: 'command to run as a daemon.

            '
        enabled:
          type: bool
          default: true
  dhcp_relay:
    type: dict
    keys:
      servers:
        type: list
        items:
          type: str
          description: Server IP or Hostname.
      tunnel_requests_disabled:
        type: bool
      mlag_peerlink_requests_disabled:
        type: bool
  dhcp_servers:
    type: list
    primary_key: vrf
    items:
      type: dict
      keys:
        disabled:
          type: bool
        vrf:
          type: str
          description: VRF in which to configure the DHCP server, use `default` to
            indicate default VRF.
          convert_types:
          - int
        dns_domain_name_ipv4:
          type: str
        dns_domain_name_ipv6:
          type: str
        ipv4_vendor_options:
          type: list
          primary_key: vendor_id
          items:
            type: dict
            keys:
              vendor_id:
                type: str
                convert_types:
                - int
              sub_options:
                type: list
                primary_key: code
                items:
                  type: dict
                  keys:
                    code:
                      type: int
                      required: true
                      min: 1
                      max: 254
                      convert_types:
                      - str
                    string:
                      type: str
                      description: 'String value for suboption data.

                        Only one of `string`, `ipv4_address` and `array_ipv4_address`
                        variables should be used for any one suboption.

                        The order of precedence if multiple of these variables are
                        defined is `string` -> `ipv4_address` -> `array_ipv4_address`.'
                    ipv4_address:
                      type: str
                      description: 'IPv4 address value for suboption data.

                        Only one of `string`, `ipv4_address` and `array_ipv4_address`
                        variables should be used for any one suboption.

                        The order of precedence if multiple of these variables are
                        defined is `string` -> `ipv4_address` -> `array_ipv4_address`.'
                    array_ipv4_address:
                      type: list
                      description: 'Array of IPv4 addresses for suboption data.

                        Only one of `string`, `ipv4_address` and `array_ipv4_address`
                        variables should be used for any one suboption.

                        The order of precedence if multiple of these variables are
                        defined is `string` -> `ipv4_address` -> `array_ipv4_address`.'
                      items:
                        type: str
        subnets:
          type: list
          primary_key: subnet
          items:
            type: dict
            keys:
              subnet:
                type: str
                required: true
              name:
                type: str
                convert_types:
                - int
              default_gateway:
                type: str
              dns_servers:
                type: list
                items:
                  type: str
              ranges:
                type: list
                items:
                  type: dict
                  keys:
                    start:
                      type: str
                      required: true
                    end:
                      type: str
                      required: true
              lease_time:
                type: dict
                keys:
                  days:
                    type: int
                    required: true
                    min: 0
                    max: 2000
                    convert_types:
                    - str
                  hours:
                    type: int
                    required: true
                    min: 0
                    max: 23
                    convert_types:
                    - str
                  minutes:
                    type: int
                    required: true
                    min: 0
                    max: 59
                    convert_types:
                    - str
  dns_domain:
    type: str
    description: Domain Name.
  domain_list:
    type: list
    description: Search list of DNS domains.
    items:
      type: str
      description: Domain name.
  dot1x:
    type: dict
    display_name: Global 802.1x Authentication
    keys:
      system_auth_control:
        type: bool
      protocol_lldp_bypass:
        type: bool
      protocol_bpdu_bypass:
        type: bool
      dynamic_authorization:
        type: bool
      mac_based_authentication:
        type: dict
        keys:
          delay:
            type: int
            min: 0
            max: 300
            convert_types:
            - str
          hold_period:
            type: int
            min: 1
            max: 300
            convert_types:
            - str
      radius_av_pair:
        type: dict
        keys:
          service_type:
            type: bool
          framed_mtu:
            type: int
            min: 68
            max: 9236
            convert_types:
            - str
      aaa:
        type: dict
        description: Configure AAA parameters.
        keys:
          unresponsive:
            type: dict
            description: Configure AAA timeout options.
            keys:
              eap_response:
                type: str
                description: EAP response to send.
                valid_values:
                - success
                - disabled
              action:
                type: dict
                description: Set action for supplicant when AAA times out.
                keys:
                  apply_cached_results:
                    type: bool
                    description: Use results from a previous AAA response.
                  cached_results_timeout:
                    type: dict
                    keys:
                      time_duration:
                        type: int
                        convert_types:
                        - str
                        min: 1
                        description: 'Enable caching for a specific duration -

                          <1-10000>      duration in days

                          <1-14400000>   duration in minutes

                          <1-240000>     duration in hours

                          <1-864000000>  duration in seconds'
                      time_duration_unit:
                        type: str
                        required: true
                        valid_values:
                        - days
                        - hours
                        - minutes
                        - seconds
                  apply_alternate:
                    type: bool
                    description: 'Apply alternate action if primary action fails.

                      eg. aaa unresponsive action apply cached-results else traffic
                      allow'
                  traffic_allow:
                    type: bool
                    description: Set action for supplicant traffic when AAA times
                      out.
                  traffic_allow_vlan:
                    type: int
                    convert_types:
                    - str
                    min: 1
                    max: 4094
              phone_action:
                type: dict
                description: Set action for supplicant when AAA times out.
                keys:
                  apply_cached_results:
                    type: bool
                    description: Use results from a previous AAA response.
                  cached_results_timeout:
                    type: dict
                    keys:
                      time_duration:
                        type: int
                        convert_types:
                        - str
                        min: 1
                        description: 'Enable caching for a specific duration -

                          <1-10000>      duration in days

                          <1-14400000>   duration in minutes

                          <1-240000>     duration in hours

                          <1-864000000>  duration in seconds'
                      time_duration_unit:
                        type: str
                        required: true
                        valid_values:
                        - days
                        - hours
                        - minutes
                        - seconds
                  apply_alternate:
                    type: bool
                    description: 'Apply alternate action if primary action fails.

                      eg. aaa unresponsive phone action apply cached-results else
                      traffic allow'
                  traffic_allow:
                    description: Set action for supplicant traffic when AAA times
                      out.
                    type: bool
              recovery_action_reauthenticate:
                type: bool
  dps_interfaces:
    type: list
    primary_key: name
    min_length: 1
    max_length: 1
    items:
      type: dict
      keys:
        name:
          type: str
          description: '"Dps1" is currently the only supported interface.'
          valid_values:
          - Dps1
        description:
          type: str
        shutdown:
          type: bool
        mtu:
          type: int
          description: Maximum Transmission Unit in bytes.
          convert_types:
          - str
          min: 68
          max: 65535
        ip_address:
          type: str
          description: IPv4 address/mask.
        flow_tracker:
          type: dict
          keys:
            sampled:
              type: str
              description: Sampled flow tracker name.
            hardware:
              type: str
              description: Hardware flow tracker name,
        tcp_mss_ceiling:
          type: dict
          keys:
            ipv4:
              type: int
              description: Segment Size for IPv4.
              min: 64
              max: 65495
              convert_types:
              - str
            ipv6:
              type: int
              description: Segment Size for IPv6.
              min: 64
              max: 65475
              convert_types:
              - str
            direction:
              type: str
              valid_values:
              - ingress
              - egress
              description: Optional direction ('ingress', 'egress')  for tcp mss ceiling.
        eos_cli:
          type: str
          description: Multiline String with EOS CLI rendered directly on the Dps
            interface in the final EOS configuration.
  dynamic_prefix_lists:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Dynamic prefix-list name.
        match_map:
          type: str
          description: Route-map name.
        prefix_list:
          type: dict
          keys:
            ipv4:
              type: str
              description: Prefix-list name.
            ipv6:
              type: str
              description: Prefix-list name.
  enable_password:
    type: dict
    keys:
      hash_algorithm:
        type: str
        valid_values:
        - md5
        - sha512
      key:
        type: str
        description: 'Must be the hash of the password using the specified algorithm.

          By default EOS salts the password, so the simplest is to generate the hash
          on an EOS device.

          '
  eos_cli:
    type: str
    description: Multiline string with EOS CLI rendered directly on the root level
      of the final EOS configuration.
  eos_cli_config_gen_configuration:
    type: dict
    keys:
      hide_passwords:
        type: bool
        description: 'Replace the input data using the `hide_passwords` filter in
          the Jinja2 templates by ''<removed>'' in the configuration if true.

          '
        default: false
  eos_cli_config_gen_documentation:
    type: dict
    keys:
      hide_passwords:
        type: bool
        description: 'Replace the input data using the `hide_passwords` filter in
          the Jinja2 templates by ''<removed>'' in the documentation if true.

          '
        default: true
  errdisable:
    type: dict
    keys:
      detect:
        type: dict
        keys:
          causes:
            type: list
            items:
              type: str
              valid_values:
              - acl
              - arp-inspection
              - dot1x
              - link-change
              - tapagg
              - xcvr-misconfigured
              - xcvr-overheat
              - xcvr-power-unsupported
      recovery:
        type: dict
        keys:
          causes:
            type: list
            items:
              type: str
              valid_values:
              - arp-inspection
              - bpduguard
              - dot1x
              - hitless-reload-down
              - lacp-rate-limit
              - link-flap
              - no-internal-vlan
              - portchannelguard
              - portsec
              - speed-misconfigured
              - tap-port-init
              - tapagg
              - uplink-failure-detection
              - xcvr-misconfigured
              - xcvr-overheat
              - xcvr-power-unsupported
              - xcvr-unsupported
          interval:
            type: int
            convert_types:
            - str
            description: Interval in seconds.
            default: 300
            min: 30
            max: 86400
  ethernet_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
        description:
          type: str
        shutdown:
          type: bool
        load_interval:
          type: int
          min: 0
          max: 600
          convert_types:
          - str
          description: Interval in seconds for updating interface counters.
        speed:
          type: str
          description: Speed should be set in the format `<interface_speed>` or `forced
            <interface_speed>` or `auto <interface_speed>`.
        mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
        l2_mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
          description: '"l2_mtu" should only be defined for platforms supporting the
            "l2 mtu" CLI.

            '
        l2_mru:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
          description: '"l2_mru" should only be defined for platforms supporting the
            "l2 mru" CLI.

            '
        vlans:
          type: str
          convert_types:
          - int
          description: 'List of switchport vlans as string.

            For a trunk port this would be a range like "1-200,300".

            For an access port this would be a single vlan "123".

            '
        native_vlan:
          type: int
          convert_types:
          - str
        native_vlan_tag:
          type: bool
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence.
        mode:
          type: str
          valid_values:
          - access
          - dot1q-tunnel
          - trunk
          - trunk phone
        phone:
          type: dict
          keys:
            trunk:
              type: str
              valid_values:
              - tagged
              - tagged phone
              - untagged
              - untagged phone
            vlan:
              type: int
              min: 1
              max: 4094
              convert_types:
              - str
        l2_protocol:
          type: dict
          keys:
            encapsulation_dot1q_vlan:
              type: int
              convert_types:
              - str
              description: Vlan tag to configure on sub-interface.
            forwarding_profile:
              type: str
              description: L2 protocol forwarding profile.
        trunk_groups:
          type: list
          items:
            type: str
        type:
          type: str
          valid_values:
          - routed
          - switched
          - l3dot1q
          - l2dot1q
          - port-channel-member
          description: 'l3dot1q and l2dot1q are used for sub-interfaces. The parent
            interface should be defined as routed.

            Interface will not be listed in device documentation, unless "type" is
            set.

            '
        snmp_trap_link_change:
          type: bool
        address_locking:
          type: dict
          keys:
            ipv4:
              type: bool
              description: Enable address locking for IPv4.
            ipv6:
              type: bool
              description: Enable address locking for IPv6.
        flowcontrol:
          type: dict
          keys:
            received:
              type: str
              valid_values:
              - desired
              - 'on'
              - 'off'
        vrf:
          type: str
          description: VRF name.
          convert_types:
          - int
        flow_tracker:
          type: dict
          keys:
            sampled:
              type: str
              description: Sampled flow tracker name.
            hardware:
              type: str
              description: Hardware flow tracker name.
        error_correction_encoding:
          type: dict
          keys:
            enabled:
              type: bool
              default: true
            fire_code:
              type: bool
            reed_solomon:
              type: bool
        link_tracking_groups:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Group name.
              direction:
                type: str
                valid_values:
                - upstream
                - downstream
        evpn_ethernet_segment:
          type: dict
          keys:
            identifier:
              type: str
              description: EVPN Ethernet Segment Identifier (Type 1 format).
            redundancy:
              type: str
              valid_values:
              - all-active
              - single-active
            designated_forwarder_election:
              type: dict
              keys:
                algorithm:
                  type: str
                  valid_values:
                  - modulus
                  - preference
                preference_value:
                  type: int
                  min: 0
                  max: 65535
                  convert_types:
                  - str
                  description: Preference_value is only used when "algorithm" is "preference".
                dont_preempt:
                  type: bool
                  description: Dont_preempt is only used when "algorithm" is "preference".
                hold_time:
                  type: int
                  convert_types:
                  - str
                subsequent_hold_time:
                  type: int
                  convert_types:
                  - str
                candidate_reachability_required:
                  type: bool
            mpls:
              type: dict
              keys:
                shared_index:
                  type: int
                  min: 1
                  max: 1024
                  convert_types:
                  - str
                tunnel_flood_filter_time:
                  type: int
                  convert_types:
                  - str
            route_target:
              type: str
              description: EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.
        encapsulation_dot1q_vlan:
          type: int
          convert_types:
          - str
          description: VLAN tag to configure on sub-interface.
        encapsulation_vlan:
          type: dict
          keys:
            client:
              type: dict
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Client VLAN ID.
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Client Outer VLAN ID.
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Client Inner VLAN ID.
                unmatched:
                  type: bool
            network:
              type: dict
              description: Network encapsulations are all optional and skipped if
                using client unmatched.
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Network VLAN ID.
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Network outer VLAN ID.
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Network inner VLAN ID.
                client:
                  type: bool
        vlan_id:
          type: int
          min: 1
          max: 4094
          convert_types:
          - str
        ip_address:
          type: str
          description: IPv4 address/mask or "dhcp".
        ip_address_secondaries:
          type: list
          items:
            type: str
        ip_verify_unicast_source_reachable_via:
          type: str
          valid_values:
          - any
          - rx
        dhcp_client_accept_default_route:
          type: bool
          description: Install default-route obtained via DHCP.
        dhcp_server_ipv4:
          type: bool
          description: Enable IPv4 DHCP server.
        dhcp_server_ipv6:
          type: bool
          description: Enable IPv6 DHCP server.
        ip_helpers:
          type: list
          primary_key: ip_helper
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ip_helper:
                type: str
              source_interface:
                type: str
                description: Source interface name.
              vrf:
                type: str
                description: VRF name.
                convert_types:
                - int
        ip_nat:
          type: dict
          $ref: eos_cli_config_gen#/$defs/interface_ip_nat
          keys:
            service_profile:
              type: str
              description: NAT interface profile.
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
        ipv6_address_link_local:
          type: str
          description: Link local IPv6 address/mask.
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_prefixes:
          type: list
          primary_key: ipv6_prefix
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
              valid_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds.
              preferred_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds.
              no_autoconfig_flag:
                type: bool
        ipv6_dhcp_relay_destinations:
          type: list
          primary_key: address
          items:
            type: dict
            keys:
              address:
                type: str
                description: DHCP server's IPv6 address.
              vrf:
                type: str
                convert_types:
                - int
              local_interface:
                type: str
                description: Local interface to communicate with DHCP server - mutually
                  exclusive to source_address.
              source_address:
                type: str
                description: Source IPv6 address to communicate with DHCP server -
                  mutually exclusive to local_interface.
              link_address:
                type: str
                description: Override the default link address specified in the relayed
                  DHCP packet.
        access_group_in:
          type: str
          description: Access list name.
        access_group_out:
          type: str
          description: Access list name.
        ipv6_access_group_in:
          type: str
          description: IPv6 access list name.
        ipv6_access_group_out:
          type: str
          description: IPv6 access list name.
        mac_access_group_in:
          type: str
          description: MAC access list name.
        mac_access_group_out:
          type: str
          description: MAC access list name.
        multicast:
          type: dict
          description: Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix
            but not combination of both.
          keys:
            ipv4:
              type: dict
              keys:
                boundaries:
                  type: list
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: ACL name or multicast IP subnet.
                      out:
                        type: bool
                static:
                  type: bool
            ipv6:
              type: dict
              keys:
                boundaries:
                  type: list
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: ACL name or multicast IP subnet.
                static:
                  type: bool
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password - only type 7 supported.
        ospf_message_digest_keys:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password - only type 7 supported.
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                border_router:
                  type: bool
                  description: Configure PIM border router. EOS default is false.
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
                bfd:
                  type: bool
                  description: Set the default for whether Bidirectional Forwarding
                    Detection is enabled for PIM.
                bidirectional:
                  type: bool
                hello:
                  type: dict
                  keys:
                    count:
                      type: str
                      convert_types:
                      - int
                      - float
                      description: Number of missed hellos after which the neighbor
                        expires. Range <1.5-65535>.
                    interval:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 65535
                      description: PIM hello interval in seconds.
        mac_security:
          type: dict
          keys:
            profile:
              type: str
        channel_group:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
            mode:
              type: str
              valid_values:
              - 'on'
              - active
              - passive
        isis_enable:
          type: str
          description: ISIS instance.
        isis_bfd:
          type: bool
          description: Enable BFD for ISIS.
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        isis_circuit_type:
          type: str
          valid_values:
          - level-1-2
          - level-1
          - level-2
        isis_hello_padding:
          type: bool
        isis_authentication_mode:
          type: str
          valid_values:
          - text
          - md5
        isis_authentication_key:
          type: str
          description: Type-7 encrypted password.
        poe:
          type: dict
          keys:
            disabled:
              type: bool
              description: Disable PoE on a POE capable port. PoE is enabled on all
                ports that support it by default in EOS.
              default: false
            priority:
              type: str
              valid_values:
              - critical
              - high
              - medium
              - low
              description: Prioritize a port's power in the event that one of the
                switch's power supplies loses power.
            reboot:
              description: Set the PoE power behavior for a PoE port when the system
                is rebooted.
              type: dict
              keys:
                action:
                  type: str
                  valid_values:
                  - maintain
                  - power-off
                  description: PoE action for interface.
            link_down:
              description: Set the PoE power behavior for a PoE port when the port
                goes down.
              type: dict
              keys:
                action:
                  type: str
                  valid_values:
                  - maintain
                  - power-off
                  description: PoE action for interface.
                power_off_delay:
                  type: int
                  min: 1
                  max: 86400
                  convert_types:
                  - str
                  description: Number of seconds to delay shutting the power off after
                    a link down event occurs. Default value is 5 seconds in EOS.
            shutdown:
              description: Set the PoE power behavior for a PoE port when the port
                is admin down.
              type: dict
              keys:
                action:
                  type: str
                  valid_values:
                  - maintain
                  - power-off
                  description: PoE action for interface.
            limit:
              type: dict
              description: Override the hardware-negotiated power limit using either
                wattage or a power class. Note that if using a power class, AVD will
                automatically convert the class value to the wattage value corresponding
                to that power class.
              keys:
                class:
                  type: int
                  min: 0
                  max: 8
                  convert_types:
                  - str
                watts:
                  type: str
                  convert_types:
                  - int
                  - float
                fixed:
                  type: bool
                  description: Set to ignore hardware classification.
            negotiation_lldp:
              type: bool
              description: Disable to prevent port from negotiating power with powered
                devices over LLDP. Enabled by default in EOS.
            legacy_detect:
              type: bool
              description: Allow a subset of legacy devices to work with the PoE switch.
                Disabled by default in EOS because it can cause false positive detections.
        ptp:
          type: dict
          keys:
            enable:
              type: bool
            announce:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                timeout:
                  type: int
                  convert_types:
                  - str
            delay_req:
              type: int
              convert_types:
              - str
            delay_mechanism:
              type: str
              valid_values:
              - e2e
              - p2p
            sync_message:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
            role:
              type: str
              valid_values:
              - master
              - dynamic
            vlan:
              type: str
              convert_types:
              - int
              description: VLAN can be 'all' or list of vlans as string.
            transport:
              type: str
              valid_values:
              - ipv4
              - ipv6
              - layer2
        profile:
          type: str
          description: Interface profile.
        storm_control:
          type: dict
          keys:
            all:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            broadcast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            multicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            unknown_unicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
        logging:
          type: dict
          keys:
            event:
              type: dict
              keys:
                link_status:
                  type: bool
                congestion_drops:
                  type: bool
                spanning_tree:
                  type: bool
                storm_control_discards:
                  type: bool
                  description: 'Discards due to storm-control.

                    '
        lldp:
          type: dict
          keys:
            transmit:
              type: bool
            receive:
              type: bool
            ztp_vlan:
              type: int
              convert_types:
              - str
              description: ZTP vlan number.
        trunk_private_vlan_secondary:
          type: bool
        pvlan_mapping:
          type: str
          convert_types:
          - int
          description: List of vlans as string.
        vlan_translations:
          type: list
          items:
            type: dict
            keys:
              from:
                type: str
                convert_types:
                - int
                description: List of vlans as string (only one vlan if direction is
                  "both").
              to:
                type: int
                convert_types:
                - str
                description: VLAN ID.
              direction:
                type: str
                valid_values:
                - in
                - out
                - both
                default: both
        dot1x:
          type: dict
          keys:
            port_control:
              type: str
              valid_values:
              - auto
              - force-authorized
              - force-unauthorized
            port_control_force_authorized_phone:
              type: bool
            reauthentication:
              type: bool
            pae:
              type: dict
              keys:
                mode:
                  type: str
                  valid_values:
                  - authenticator
            authentication_failure:
              type: dict
              keys:
                action:
                  type: str
                  valid_values:
                  - allow
                  - drop
                allow_vlan:
                  type: int
                  min: 1
                  max: 4094
                  convert_types:
                  - str
            host_mode:
              type: dict
              keys:
                mode:
                  type: str
                  valid_values:
                  - multi-host
                  - single-host
                multi_host_authenticated:
                  type: bool
            mac_based_authentication:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                host_mode_common:
                  type: bool
            timeout:
              type: dict
              keys:
                idle_host:
                  type: int
                  min: 10
                  max: 65535
                  convert_types:
                  - str
                quiet_period:
                  type: int
                  min: 1
                  max: 65535
                  convert_types:
                  - str
                reauth_period:
                  type: str
                  convert_types:
                  - int
                  description: Value can be 60-4294967295 or 'server'.
                reauth_timeout_ignore:
                  type: bool
                tx_period:
                  type: int
                  min: 1
                  max: 65535
                  convert_types:
                  - str
            reauthorization_request_limit:
              type: int
              min: 1
              max: 10
              convert_types:
              - str
            unauthorized:
              type: dict
              keys:
                access_vlan_membership_egress:
                  type: bool
                native_vlan_membership_egress:
                  type: bool
            eapol:
              type: dict
              keys:
                disabled:
                  type: bool
                authentication_failure_fallback_mba:
                  type: dict
                  keys:
                    enabled:
                      type: bool
                    timeout:
                      type: int
                      min: 0
                      max: 65535
                      convert_types:
                      - str
        service_profile:
          type: str
          description: QOS profile.
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Rate in kbps, pps or percent.

                Supported options are platform dependent.

                Examples:

                - "5000 kbps"

                - "1000 pps"

                - "20 percent"

                '
        qos:
          type: dict
          keys:
            trust:
              type: str
              valid_values:
              - dscp
              - cos
              - disabled
            dscp:
              type: int
              convert_types:
              - str
              description: DSCP value.
            cos:
              type: int
              convert_types:
              - str
              description: COS value.
        spanning_tree_bpdufilter:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_bpduguard:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_guard:
          type: str
          valid_values:
          - loop
          - root
          - disabled
        spanning_tree_portfast:
          type: str
          valid_values:
          - edge
          - network
        vmtracer:
          type: bool
        priority_flow_control:
          type: dict
          keys:
            enabled:
              type: bool
            priorities:
              type: list
              primary_key: priority
              items:
                type: dict
                keys:
                  priority:
                    type: int
                    min: 0
                    max: 7
                    convert_types:
                    - str
                  no_drop:
                    type: bool
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              convert_types:
              - str
              description: Interval in milliseconds.
            min_rx:
              type: int
              convert_types:
              - str
              description: Rate in milliseconds.
            multiplier:
              type: int
              min: 3
              max: 50
              convert_types:
              - str
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Policy Based Routing Policy-map name.
            qos:
              type: dict
              keys:
                input:
                  type: str
                  required: true
                  description: Quality of Service Policy-map name.
        mpls:
          type: dict
          keys:
            ip:
              type: bool
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
                igp_sync:
                  type: bool
        lacp_timer:
          type: dict
          keys:
            mode:
              type: str
              valid_values:
              - fast
              - normal
            multiplier:
              type: int
              min: 3
              max: 3000
              convert_types:
              - str
        lacp_port_priority:
          type: int
          min: 0
          max: 65535
          convert_types:
          - str
        transceiver:
          type: dict
          keys:
            media:
              type: dict
              keys:
                override:
                  type: str
                  description: Transceiver type.
        ip_proxy_arp:
          type: bool
        traffic_policy:
          type: dict
          keys:
            input:
              type: str
              description: Ingress traffic policy.
            output:
              type: str
              description: Egress traffic policy.
        bgp:
          type: dict
          keys:
            session_tracker:
              type: str
              description: Name of session tracker.
        ip_igmp_host_proxy:
          type: dict
          keys:
            enabled:
              type: bool
            groups:
              type: list
              primary_key: group
              items:
                type: dict
                keys:
                  group:
                    type: str
                    description: Multicast Address.
                  exclude:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
                  include:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
            report_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 31744
              description: Time interval between unsolicited reports.
            access_lists:
              type: list
              primary_key: name
              description: Non-standard Access List name.
              items:
                type: dict
                keys:
                  name:
                    type: str
            version:
              type: int
              convert_types:
              - str
              min: 1
              max: 3
              description: IGMP version on IGMP host-proxy interface.
        peer:
          type: str
          description: Key only used for documentation or validation purposes.
        peer_interface:
          type: str
          description: Key only used for documentation or validation purposes.
        peer_type:
          type: str
          description: Key only used for documentation or validation purposes.
        sflow:
          type: dict
          keys:
            enable:
              type: bool
            egress:
              type: dict
              keys:
                enable:
                  type: bool
                unmodified_enable:
                  type: bool
        port_profile:
          type: str
          description: Key only used for documentation or validation purposes.
        uc_tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
                description: TX-Queue ID.
              random_detect:
                type: dict
                keys:
                  ecn:
                    description: Explicit Congestion Notification.
                    type: dict
                    keys:
                      count:
                        type: bool
                        description: Enable counter for random-detect ECNs.
                      threshold:
                        type: dict
                        keys:
                          units:
                            required: true
                            type: str
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - milliseconds
                            description: Indicate the units to be used for the threshold
                              values.
                          min:
                            type: int
                            required: true
                            min: 1
                            max: 256000000
                            convert_types:
                            - str
                            description: Set the random-detect ECN minimum-threshold.
                          max:
                            type: int
                            required: true
                            convert_types:
                            - str
                            min: 1
                            max: 256000000
                            description: Set the random-detect ECN maximum-threshold.
                          max_probability:
                            type: int
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: Set the random-detect ECN max-mark-probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: Set the random-detect ECN weight.
        tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
                description: TX-Queue ID.
              random_detect:
                type: dict
                keys:
                  ecn:
                    description: Explicit Congestion Notification.
                    type: dict
                    keys:
                      count:
                        type: bool
                        description: Enable counter for random-detect ECNs.
                      threshold:
                        type: dict
                        keys:
                          units:
                            type: str
                            required: true
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - milliseconds
                            description: Indicate the units to be used for the threshold
                              values.
                          min:
                            type: int
                            min: 1
                            max: 256000000
                            convert_types:
                            - str
                            description: Set the random-detect ECN minimum-threshold.
                          max:
                            type: int
                            required: true
                            convert_types:
                            - str
                            min: 1
                            max: 256000000
                            description: Set the random-detect ECN maximum-threshold.
                          max_probability:
                            type: int
                            required: true
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: Set the random-detect ECN max-mark-probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: Set the random-detect ECN weight.
        vrrp_ids:
          type: list
          description: VRRP model.
          primary_key: id
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: VRID.
              priority_level:
                type: int
                convert_types:
                - str
                description: Instance priority.
                min: 1
                max: 254
              advertisement:
                type: dict
                keys:
                  interval:
                    type: int
                    convert_types:
                    - str
                    description: Interval in seconds.
                    min: 1
                    max: 255
              preempt:
                type: dict
                keys:
                  enabled:
                    type: bool
                    required: true
                  delay:
                    type: dict
                    keys:
                      minimum:
                        type: int
                        convert_types:
                        - str
                        description: Minimum preempt delay in seconds.
                        min: 0
                        max: 3600
                      reload:
                        type: int
                        convert_types:
                        - str
                        description: Reload preempt delay in seconds.
                        min: 0
                        max: 3600
              timers:
                type: dict
                keys:
                  delay:
                    type: dict
                    keys:
                      reload:
                        type: int
                        description: Delay after reload in seconds.
                        convert_types:
                        - str
                        min: 0
                        max: 3600
              tracked_object:
                type: list
                primary_key: name
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Tracked object name.
                    decrement:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 254
                      description: Decrement VRRP priority by 1-254.
                    shutdown:
                      type: bool
              ipv4:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv4 address.
                  version:
                    type: int
                    convert_types:
                    - str
                    valid_values:
                    - 2
                    - 3
              ipv6:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv6 address.
        validate_state:
          type: bool
          description: Set to false to disable interface validation by the `eos_validate_state`
            role.
        switchport:
          type: dict
          keys:
            port_security:
              type: dict
              keys:
                enabled:
                  type: bool
                mac_address_maximum:
                  type: dict
                  description: Maximum number of MAC addresses allowed on the interface.
                  keys:
                    disabled:
                      type: bool
                      description: Disable port level check for port security (only
                        in violation 'shutdown' mode).
                    limit:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 1000
                      description: MAC address limit.
                violation:
                  type: dict
                  description: Configure violation mode (shutdown or protect), EOS
                    default is 'shutdown'.
                  keys:
                    mode:
                      type: str
                      valid_values:
                      - shutdown
                      - protect
                      description: Configure port security mode.
                    protect_log:
                      type: bool
                      description: Log new addresses seen after limit is reached in
                        protect mode.
                vlan_default_mac_address_maximum:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 1000
                  description: Default maximum MAC addresses for all VLANs on this
                    interface.
                vlans:
                  type: list
                  primary_key: range
                  items:
                    type: dict
                    keys:
                      range:
                        type: str
                        convert_types:
                        - int
                        description: "VLAN ID or range(s) of VLAN IDs, <1-4094>.\nExample:\n
                          \ - 3\n  - 1,3\n  - 1-10\n"
                      mac_address_maximum:
                        type: int
                        convert_types:
                        - str
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the ethernet interface
            in the final EOS configuration.
  event_handlers:
    type: list
    description: 'Gives the ability to monitor and react to Syslog messages.

      Event Handlers provide a powerful and flexible tool that can be used to apply
      self-healing actions,

      customize the system behavior, and implement workarounds to problems discovered
      in the field.

      '
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Event Handler Name.
        action_type:
          type: str
          valid_values:
          - bash
          - increment
          - log
        action:
          type: str
          description: 'Command to execute.

            '
        delay:
          type: int
          convert_types:
          - str
          description: 'Event-handler delay in seconds.

            '
        trigger:
          type: str
          description: 'Configure event trigger condition.

            '
          valid_values:
          - on-boot
          - on-counters
          - on-intf
          - on-logging
          - on-maintenance
          - on-startup-config
          - vm-tracer vm
        trigger_on_counters:
          type: dict
          keys:
            condition:
              type: str
              description: Set the logical expression to evaluate.
            granularity_per_source:
              type: bool
              description: "Set the granularity of event counting for a wildcarded
                condition.\nExample -\n  condition ( Arad*.IptCrcErrCnt.delta > 100
                ) and ( Arad*.UcFifoFullDrop.delta > 100 )\n  [* wildcard is used
                here]"
            poll_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 1000000
              description: Set the polling interval in seconds.
        trigger_on_logging:
          type: dict
          keys:
            poll_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 1000000
              description: Set the polling interval in seconds.
            regex:
              type: str
              description: Regular expression to use for searching log messages.
        trigger_on_intf:
          type: dict
          description: 'Trigger condition occurs on specified interface changes.

            Note: Any one of the `ip`, `ipv6` and `operstatus` key needs to be defined
            along with the `interface`.'
          keys:
            interface:
              type: str
              required: true
              description: "Interface name.\nExample - Ethernet4\n          Loopback4-6\n
                \         Port-channel4,7"
            ip:
              type: bool
              description: Action is triggered upon changes to interface IP address
                assignment.
            ipv6:
              type: bool
              description: Action is triggered upon changes to interface ipv6 address
                assignment.
            operstatus:
              type: bool
              description: Action is triggered upon changes to interface operStatus.
        trigger_on_maintenance:
          description: Settings required for trigger 'on-maintenance'.
          type: dict
          keys:
            operation:
              type: str
              required: true
              valid_values:
              - enter
              - exit
            bgp_peer:
              description: 'Ipv4/Ipv6 address or peer group name.

                Trigger condition occurs on maintenance operation of specified BGP
                peer.'
              type: str
            action:
              type: str
              required: true
              description: Action for maintenance operation.
              valid_values:
              - after
              - before
              - all
              - begin
              - end
            stage:
              type: str
              description: Action is triggered after/before specified stage.
              valid_values:
              - bgp
              - linkdown
              - mlag
              - ratemon
            vrf:
              type: str
              description: VRF name. VRF can be defined for "bgp_peer" only.
            interface:
              type: str
              description: Trigger condition occurs on maintenance operation of specified
                interface.
            unit:
              type: str
              description: Name of unit. Trigger condition occurs on maintenance operation
                of specified unit
        regex:
          type: str
          deprecation:
            warning: true
            removed: false
            remove_in_version: 5.0.0
            new_key: event_handlers.trigger_on_logging.regex
          description: 'Regular expression to use for searching log messages. Required
            for on-logging trigger.

            '
        asynchronous:
          type: bool
          default: false
          description: 'Set the action to be non-blocking.

            '
  event_monitor:
    type: dict
    keys:
      enabled:
        type: bool
  flow_tracking:
    type: dict
    keys:
      sampled:
        type: dict
        $ref: eos_cli_config_gen#/$defs/flow_tracking
        keys:
          encapsulation:
            type: dict
            keys:
              ipv4_ipv6:
                type: bool
              mpls:
                type: bool
          sample:
            type: int
            convert_types:
            - str
            min: 1
            max: 4294967295
          hardware_offload:
            type: dict
            keys:
              ipv4:
                type: bool
                description: Configure hardware offload for IPv4 traffic.
              ipv6:
                type: bool
                description: Configure hardware offload for IPv6 traffic.
              threshold_minimum:
                type: int
                convert_types:
                - str
                min: 1
                max: 4294967295
                description: Minimum number of samples.
          trackers:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                table_size:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 614400
                  description: 'Maximum number of entries in flow table.

                    '
                record_export:
                  type: dict
                  keys:
                    mpls:
                      type: bool
                      description: Export MPLS forwarding information.
      hardware:
        type: dict
        $ref: eos_cli_config_gen#/$defs/flow_tracking
        keys:
          record:
            type: dict
            keys:
              format_ipfix_standard_timestamps_counters:
                type: bool
                description: Enable software export of IPFIX data records.
  flow_trackings:
    documentation_options:
      table: flow-tracking
    deprecation:
      warning: true
      new_key: flow_tracking
      remove_in_version: v5.0.0
    type: list
    primary_key: type
    items:
      type: dict
      keys:
        type:
          type: str
          valid_values:
          - sampled
          description: Flow Tracking Type - only 'sampled' supported for now.
        sample:
          type: int
          convert_types:
          - str
          min: 1
          max: 4294967295
        trackers:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Tracker Name.
              record_export:
                type: dict
                keys:
                  on_inactive_timeout:
                    type: int
                    convert_types:
                    - str
                    min: 3000
                    max: 900000
                    description: Flow record inactive export timeout in milliseconds.
                  on_interval:
                    type: int
                    convert_types:
                    - str
                    min: 1000
                    max: 36000000
                    description: Flow record export interval in milliseconds.
                  mpls:
                    type: bool
                    description: Export MPLS forwarding information.
              exporters:
                type: list
                primary_key: name
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Exporter Name.
                    collector:
                      type: dict
                      keys:
                        host:
                          type: str
                          description: Collector IPv4 address or IPv6 address or fully
                            qualified domain name.
                        port:
                          type: int
                          description: Collector Port Number.
                          min: 1
                          max: 65535
                          convert_types:
                          - str
                    format:
                      type: dict
                      keys:
                        ipfix_version:
                          type: int
                          convert_types:
                          - str
                    local_interface:
                      type: str
                      description: Local Source Interface.
                    template_interval:
                      type: int
                      convert_types:
                      - str
                      min: 5000
                      max: 3600000
                      description: Template interval in milliseconds.
              table_size:
                type: int
                convert_types:
                - str
                min: 1
                max: 614400
                description: 'Maximum number of entries in flow table.

                  '
        shutdown:
          type: bool
          default: false
  generate_default_config:
    type: bool
    default: true
    description: 'The `generate_default_config` knob allows to omit default EOS configuration.

      This can be useful when leveraging `eos_cli_config_gen` to generate configlets
      with CloudVision.


      The following commands will be omitted when `generate_default_config` is set
      to `false`:


      - RANCID Content Type

      - Hostname

      - Default configuration for `aaa`

      - Default configuration for `enable password`

      - Transceiver qsfp default mode

      - End of configuration delimiter

      '
  generate_device_documentation:
    type: bool
    default: true
  hardware:
    type: dict
    keys:
      access_list:
        type: dict
        keys:
          mechanism:
            type: str
            valid_values:
            - algomatch
            - none
            - tcam
      speed_groups:
        type: list
        primary_key: speed_group
        convert_types:
        - dict
        items:
          type: dict
          keys:
            speed_group:
              type: str
              convert_types:
              - int
            serdes:
              type: str
              description: Serdes speed like "10g" or "25g".
  hardware_counters:
    type: dict
    keys:
      features:
        type: list
        description: "This data model allows to configure the list of hardware counters
          feature\navailable on Arista platforms.\n\nThe `name` key accepts a list
          of valid_values which MUST be updated to support\nnew feature as they are
          released in EOS.\n\nThe available values of the different keys like 'direction'
          or 'address_type'\nare feature and hardware dependent and this model DOES
          NOT validate that the\ncombinations are valid. It is the responsibility
          of the user of this data model\nto make sure that the rendered CLI is accepted
          by the targeted device.\n\nExamples:\n\n  * Use:\n    ```yaml\n    hardware_counters:\n
          \     features:\n        - name: ip\n          direction: out\n          layer3:
          true\n          units_packets: true\n    ```\n\n    to render:\n    ```eos\n
          \   hardware counter feature ip out layer3 units packets\n    ```\n  * Use:\n
          \   ```yaml\n    hardware_counters:\n      features:\n        - name: route\n
          \         address_type: ipv4\n          vrf: test\n          prefix: 192.168.0.0/24\n
          \   ```\n\n    to render:\n    ```eos\n    hardware counter feature route
          ipv4 vrf test 192.168.0.0/24\n    ```\n"
        items:
          type: dict
          keys:
            name:
              type: str
              valid_values:
              - acl
              - decap-group
              - directflow
              - ecn
              - flow-spec
              - gre tunnel interface
              - ip
              - mpls interface
              - mpls lfib
              - mpls tunnel
              - multicast
              - nexthop
              - pbr
              - pdp
              - policing interface
              - qos
              - qos dual-rate-policer
              - route
              - routed-port
              - subinterface
              - tapagg
              - traffic-class
              - traffic-policy
              - vlan
              - vlan-interface
              - vni decap
              - vni encap
              - vtep decap
              - vtep encap
            direction:
              type: str
              valid_values:
              - in
              - out
              - cpu
              description: 'Most features support only ''in'' and ''out''. Some like
                traffic-policy support ''cpu''.

                Some features DO NOT have any direction.

                This validation IS NOT made by the schemas.

                '
            address_type:
              type: str
              valid_values:
              - ipv4
              - ipv6
              - mac
              description: 'Supported only for the following features:

                - acl: [ipv4, ipv6, mac] if direction is ''out''

                - multicast: [ipv4, ipv6]

                - route: [ipv4, ipv6]

                This validation IS NOT made by the schemas.

                '
            layer3:
              type: bool
              description: 'Supported only for the ''ip'' feature.

                '
            vrf:
              type: str
              description: 'Supported only for the ''route'' feature.

                This validation IS NOT made by the schemas.

                '
              convert_types:
              - int
            prefix:
              type: str
              description: 'Supported only for the ''route'' feature.

                Mandatory for the ''route'' feature.

                This validation IS NOT made by the schemas.

                '
            units_packets:
              type: bool
  hostname:
    type: str
  interface_defaults:
    type: dict
    keys:
      ethernet:
        type: dict
        keys:
          shutdown:
            type: bool
      mtu:
        type: int
        convert_types:
        - str
  interface_groups:
    type: list
    display_name: Maintenance Interface Groups
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface-Group name.
        interfaces:
          type: list
          items:
            type: str
            description: Interface Name.
        bgp_maintenance_profiles:
          type: list
          items:
            type: str
            description: Name of BGP Maintenance Profile.
        interface_maintenance_profiles:
          type: list
          items:
            type: str
            description: Name of Interface Maintenance Profile.
  interface_profiles:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface-Profile Name.
        commands:
          type: list
          required: true
          items:
            type: str
            description: 'EOS CLI interface command.

              Example: "switchport mode access"

              '
  ip_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IP Extended Access-Lists (improved model)
    items:
      type: dict
      keys:
        name:
          type: str
          description: Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        entries:
          type: list
          description: ACL Entries.
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
                description: ACL entry sequence number.
              remark:
                type: str
                description: 'Comment up to 100 characters.

                  If remark is defined, other keys in the ACL entry will be ignored.'
              action:
                type: str
                valid_values:
                - permit
                - deny
                description: 'ACL action.

                  Required except for remarks.'
              protocol:
                type: str
                description: '"ip", "tcp", "udp", "icmp" or other protocol name or
                  number.

                  Required except for remarks.'
              source:
                type: str
                description: '"any", "<ip>/<mask>" or "<ip>".

                  "<ip>" without a mask means host.

                  Required except for remarks.'
              source_ports_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                - range
                default: eq
              source_ports:
                type: list
                items:
                  type: str
                  convert_types:
                  - int
                  description: TCP/UDP source port name or number.
              destination:
                type: str
                description: '"any", "<ip>/<mask>" or "<ip>".

                  "<ip>" without a mask means host.

                  Required except for remarks.'
              destination_ports_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                - range
                default: eq
              destination_ports:
                type: list
                items:
                  type: str
                  convert_types:
                  - int
                  description: TCP/UDP destination port name or number.
              tcp_flags:
                type: list
                items:
                  type: str
                  description: TCP Flag Name.
              fragments:
                type: bool
                description: Match non-head fragment packets.
              log:
                type: bool
                description: Log matches against this rule.
              ttl:
                type: int
                description: TTL value.
                convert_types:
                - str
                min: 0
                max: 255
              ttl_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                default: eq
              icmp_type:
                type: str
                convert_types:
                - int
                description: Message type name/number for ICMP packets.
              icmp_code:
                type: str
                convert_types:
                - int
                description: Message code for ICMP packets.
              nexthop_group:
                type: str
                description: nexthop-group name.
              tracked:
                type: bool
                description: Match packets in existing ICMP/UDP/TCP connections.
              dscp:
                type: str
                convert_types:
                - int
                description: DSCP value or name.
              vlan_number:
                type: int
                convert_types:
                - str
              vlan_inner:
                type: bool
                default: false
              vlan_mask:
                type: str
                description: 0x000-0xFFF VLAN mask.
  ip_access_lists_max_entries:
    type: int
    convert_types:
    - str
    description: Limit ACL entries defined under the `ip_access_lists`.
  ip_community_lists:
    type: list
    secondary_key: entries
    primary_key: name
    convert_types:
    - dict
    display_name: IP Community Lists
    description: 'Communities and regexp entries MUST not be configured in the same
      community-list.

      '
    items:
      type: dict
      keys:
        name:
          type: str
          description: IP Community-list Name.
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              action:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              communities:
                type: list
                items:
                  type: str
                description: 'If defined, a standard community-list will be configured.

                  Supported community strings (case insensitive):

                  - GSHUT

                  - internet

                  - local-as

                  - no-advertise

                  - no-export

                  - <1-4294967040>

                  - aa:nn

                  '
              regexp:
                type: str
                description: 'Regular Expression.

                  If defined, a regex community-list will be configured.

                  '
  ip_dhcp_relay:
    type: dict
    keys:
      always_on:
        type: bool
        description: DhcpRelay Agent will be in always-on mode.
      all_subnets:
        type: bool
        description: Allow forwarding requests with secondary IP addresses in the
          gateway address "giaddr" field.
      information_option:
        type: bool
        description: Insert Option-82 information.
  ip_dhcp_snooping:
    type: dict
    keys:
      enabled:
        type: bool
      bridging:
        type: bool
      information_option:
        type: dict
        keys:
          enabled:
            type: bool
            description: Enable insertion of option-82 in DHCP request packets.
          circuit_id_type:
            type: str
            convert_types:
            - int
            description: '"none" or <0 - 255>.'
          circuit_id_format:
            type: str
            description: 'Required if `circuit_id_type` is set.

              - "%h:%p" Hostname and interface name

              - "%p:%v" Interface name and VLAN ID'
            valid_values:
            - '%h:%p'
            - '%p:%v'
      vlan:
        type: str
        convert_types:
        - int
        description: 'VLAN range as string.

          "< vlan_id >, < vlan_id >-< vlan_id >"

          Example: 15,16,17,18'
  ip_domain_lookup:
    type: dict
    keys:
      source_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: 'Source Interface.

                '
            vrf:
              type: str
              convert_types:
              - int
  ip_extcommunity_lists:
    type: list
    primary_key: name
    secondary_key: entries
    convert_types:
    - dict
    display_name: IP Extended Community Lists
    items:
      type: dict
      keys:
        name:
          type: str
          description: Community-list Name.
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              extcommunities:
                type: str
                required: true
                description: 'Communities as string.

                  Example: "65000:65000"

                  '
  ip_extcommunity_lists_regexp:
    type: list
    primary_key: name
    secondary_key: entries
    convert_types:
    - dict
    display_name: IP Extended Community Lists RegExp
    items:
      type: dict
      keys:
        name:
          type: str
          description: Community-list Name.
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              regexp:
                type: str
                required: true
                description: Regular Expression.
  ip_ftp_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Interface Name.
        vrf:
          type: str
          description: VRF Name.
  ip_hardware:
    type: dict
    keys:
      fib:
        type: dict
        keys:
          optimize:
            type: dict
            keys:
              prefixes:
                type: dict
                keys:
                  profile:
                    type: str
                    valid_values:
                    - internet
                    - urpf-internet
  ip_http_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Interface Name.
          type: str
        vrf:
          type: str
          convert_types:
          - int
  ip_icmp_redirect:
    type: bool
  ip_igmp_snooping:
    type: dict
    keys:
      globally_enabled:
        type: bool
        default: true
        description: Activate or deactivate IGMP snooping for all vlans where `vlans`
          allows user to activate / deactivate IGMP snooping per vlan.
      robustness_variable:
        type: int
        convert_types:
        - str
      restart_query_interval:
        type: int
        convert_types:
        - str
      interface_restart_query:
        type: int
        convert_types:
        - str
      fast_leave:
        type: bool
      querier:
        type: dict
        keys:
          enabled:
            type: bool
          address:
            type: str
            description: IP Address.
          query_interval:
            type: int
            convert_types:
            - str
          max_response_time:
            type: int
            convert_types:
            - str
          last_member_query_interval:
            type: int
            convert_types:
            - str
          last_member_query_count:
            type: int
            convert_types:
            - str
          startup_query_interval:
            type: int
            convert_types:
            - str
          startup_query_count:
            type: int
            convert_types:
            - str
          version:
            type: int
            convert_types:
            - str
      proxy:
        type: bool
      vlans:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
              description: VLAN ID.
            enabled:
              type: bool
            querier:
              type: dict
              keys:
                enabled:
                  type: bool
                address:
                  type: str
                  description: IP Address.
                query_interval:
                  type: int
                  convert_types:
                  - str
                max_response_time:
                  type: int
                  convert_types:
                  - str
                last_member_query_interval:
                  type: int
                  convert_types:
                  - str
                last_member_query_count:
                  type: int
                  convert_types:
                  - str
                startup_query_interval:
                  type: int
                  convert_types:
                  - str
                startup_query_count:
                  type: int
                  convert_types:
                  - str
                version:
                  type: int
                  convert_types:
                  - str
            max_groups:
              type: int
              convert_types:
              - str
            fast_leave:
              type: bool
            proxy:
              type: bool
              description: 'Global proxy settings should be enabled before enabling
                per-vlan.

                '
  ip_name_servers:
    type: list
    items:
      type: dict
      keys:
        ip_address:
          type: str
          description: IPv4 or IPv6 address for DNS server.
        vrf:
          description: VRF Name.
          type: str
          convert_types:
          - int
        priority:
          description: Priority value (lower is first).
          type: int
          convert_types:
          - str
          min: 0
          max: 4
  ip_nat:
    type: dict
    keys:
      kernel_buffer_size:
        type: int
        convert_types:
        - str
        min: 1
        max: 64
        description: Buffer size in MB.
      profiles:
        type: list
        primary_key: name
        items:
          type: dict
          $ref: eos_cli_config_gen#/$defs/interface_ip_nat
          keys:
            name:
              type: str
            vrf:
              type: str
              convert_types:
              - int
              description: Specify VRF for NAT profile.
      pools:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            type:
              type: str
              valid_values:
              - ip-port
              - port-only
              default: ip-port
            prefix_length:
              type: int
              convert_types:
              - str
              min: 16
              max: 32
              description: It is only used and required when `type` is `ip-port`.
            ranges:
              type: list
              items:
                type: dict
                keys:
                  first_ip:
                    type: str
                    description: 'IPv4 address.

                      Required when `type` is `ip-port` and ignored otherwise.'
                  last_ip:
                    type: str
                    description: 'IPv4 address.

                      Required when `type` is `ip-port` and ignored otherwise.

                      `first_ip` and `last_ip` ip addresses should lie in same subnet.'
                  first_port:
                    type: int
                    convert_types:
                    - str
                    min: 1
                    max: 65535
                  last_port:
                    type: int
                    convert_types:
                    - str
                    min: 1
                    max: 65535
                    description: 'Required when `first_port` is set.

                      `last_port` must be greater than or equal to `first_port`.'
            utilization_log_threshold:
              type: int
              convert_types:
              - str
              min: 1
              max: 100
      synchronization:
        type: dict
        keys:
          description:
            type: str
          expiry_interval:
            type: int
            convert_types:
            - str
            min: 60
            max: 3600
            description: In seconds.
          local_interface:
            type: str
            description: EOS interface name.
          peer_address:
            type: str
            description: IPv4 address.
          port_range:
            type: dict
            keys:
              first_port:
                type: int
                convert_types:
                - str
                min: 1024
                max: 65535
              last_port:
                type: int
                convert_types:
                - str
                min: 1024
                max: 65535
                description: '>= first_port.'
              split_disabled:
                type: bool
          shutdown:
            type: bool
      translation:
        type: dict
        keys:
          address_selection:
            type: dict
            keys:
              any:
                type: bool
              hash_field_source_ip:
                type: bool
          counters:
            type: bool
          low_mark:
            type: dict
            keys:
              percentage:
                type: int
                convert_types:
                - str
                min: 1
                max: 99
                description: Used to render 'ip nat translation low-mark <percentage>'.
              host_percentage:
                type: int
                convert_types:
                - str
                min: 1
                max: 99
                description: Used to render 'ip nat translation low-mark <host_percentage>
                  host'.
          max_entries:
            type: dict
            keys:
              limit:
                type: int
                convert_types:
                - str
                min: 0
                max: 4294967295
              host_limit:
                type: int
                convert_types:
                - str
                min: 0
                max: 4294967295
              ip_limits:
                type: list
                primary_key: ip
                items:
                  type: dict
                  keys:
                    ip:
                      type: str
                      description: IPv4 address.
                    limit:
                      type: int
                      required: true
                      convert_types:
                      - str
                      min: 0
                      max: 4294967295
          timeouts:
            type: list
            primary_key: protocol
            items:
              type: dict
              keys:
                protocol:
                  type: str
                  valid_values:
                  - tcp
                  - udp
                timeout:
                  type: int
                  required: true
                  convert_types:
                  - str
                  min: 0
                  max: 4294967295
                  description: In seconds.
  ip_radius_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface Name.
        vrf:
          type: str
          description: VRF Name.
          convert_types:
          - int
  ip_routing:
    type: bool
  ip_routing_ipv6_interfaces:
    type: bool
  ip_security:
    type: dict
    keys:
      ike_policies:
        type: list
        description: Internet Security Association and Key Mgmt Protocol.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy name.
            local_id:
              type: str
              description: 'Local IKE identification.

                Can be an IPv4 or an IPv6 address.

                If both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes
                precedence.'
            local_id_fqdn:
              type: str
              description: 'Local FQDN or UFQDN IKE identification.

                If both `local_id` and `local_id_fqdn` are set, `local_id_fqdn` takes
                precedence.'
            ike_lifetime:
              type: int
              convert_types:
              - str
              min: 1
              max: 24
              description: IKE lifetime in hours.
            encryption:
              type: str
              valid_values:
              - 3des
              - aes128
              - aes256
              description: IKE encryption algorithm.
            dh_group:
              type: int
              convert_types:
              - str
              valid_values:
              - 1
              - 2
              - 5
              - 14
              - 15
              - 16
              - 17
              - 20
              - 21
              - 24
              description: Diffie-Hellman group for the key exchange.
      sa_policies:
        type: list
        description: Security Association policies.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Name of the SA policy. The "null" value is deprecated and
                will be removed in AVD 5.0.0.
            sa_lifetime:
              type: dict
              keys:
                value:
                  type: int
                  description: 'Lifetime value for this SA.

                    Valid range depends on the unit.

                    <1-24>       Lifetime in hours ( default )

                    <1-4000000>  Packet limit in thousands

                    <1-6000>     Byte limit in GB ( 1024 MB )

                    <1-6144000>  Byte limit in MB ( 1024 KB )'
                unit:
                  type: str
                  valid_values:
                  - gigabytes
                  - hours
                  - megabytes
                  - thousand-packets
                  default: hours
            esp:
              type: dict
              keys:
                integrity:
                  type: str
                  valid_values:
                  - disabled
                  - sha1
                  - sha256
                  - 'null'
                encryption:
                  type: str
                  valid_values:
                  - disabled
                  - aes128
                  - aes128gcm128
                  - aes128gcm64
                  - aes256
                  - aes256gcm128
                  - 'null'
            pfs_dh_group:
              type: int
              convert_types:
              - str
              valid_values:
              - 1
              - 2
              - 5
              - 14
              - 15
              - 16
              - 17
              - 20
              - 21
              - 24
      profiles:
        type: list
        description: IPSec profiles.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Name of the IPsec profile.
            ike_policy:
              type: str
              description: Name of the IKE policy to use in this profile.
            sa_policy:
              type: str
              description: Name of the Security Association to use in this profile.
            connection:
              type: str
              description: IPsec connection (Initiator/Responder/Dynamic).
              valid_values:
              - add
              - start
              - route
            shared_key:
              type: str
              description: Encrypted password - only type 7 supported.
            dpd:
              type: dict
              description: Dead Peer Detection.
              keys:
                interval:
                  type: int
                  description: Interval (in seconds) between keep-alive messages.
                  required: true
                  convert_types:
                  - str
                  min: 2
                  max: 3600
                time:
                  type: int
                  description: Time (in seconds) after which the action is applied.
                  required: true
                  convert_types:
                  - str
                  min: 10
                  max: 3600
                action:
                  type: str
                  description: 'Action to apply.


                    * ''clear'': Delete all connections

                    * ''hold'': Re-negotiate connection on demand

                    * ''restart'': Restart connection immediately

                    '
                  required: true
                  valid_values:
                  - clear
                  - hold
                  - restart
            mode:
              type: str
              description: Ipsec mode type.
              valid_values:
              - transport
              - tunnel
            flow_parallelization_encapsulation_udp:
              type: bool
              description: 'Enable flow parallelization.

                When enabled, multiple cores are used to parallelize the IPsec encryption
                and decryption processing.'
      key_controller:
        type: dict
        keys:
          profile:
            type: str
            description: IPsec profile name to use.
      hardware_encryption_disabled:
        type: bool
        default: false
        description: 'Disable hardware encryption.

          An SFE restart is needed for this change to take effect.'
  ip_ssh_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Interface Name.
          type: str
        vrf:
          type: str
          default: default
          convert_types:
          - int
  ip_tacacs_source_interfaces:
    type: list
    display_name: IP Tacacs Source Interfaces
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface name.
        vrf:
          type: str
          display_name: VRF
          convert_types:
          - int
  ip_telnet_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Interface Name.
        vrf:
          type: str
          description: VRF Name.
  ip_tftp_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Interface Name.
        vrf:
          type: str
          description: VRF Name.
  ip_virtual_router_mac_address:
    type: str
    description: MAC address (hh:hh:hh:hh:hh:hh).
  ipv6_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IPv6 Extended Access-Lists
    items:
      type: dict
      keys:
        name:
          type: str
          description: IPv6 Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "deny ipv6 any any"

                  '
  ipv6_dhcp_relay:
    type: dict
    keys:
      always_on:
        type: bool
        description: DhcpRelay Agent will be in always-on mode, off by default.
      all_subnets:
        type: bool
        description: Allow forwarding requests with additional IPv6 addresses in the
          gateway address "giaddr" field.
      option:
        type: dict
        description: Insert DHCP Option.
        keys:
          link_layer_address:
            type: bool
            description: Add Option 79 (Link Layer Address Option).
          remote_id_format:
            type: str
            valid_values:
            - '%m:%i'
            - '%m:%p'
            description: Add RemoteID option 37 in format MAC address and interface
              ID (`%m:%i`) or MAC address and interface name (`%m:%p`).
  ipv6_hardware:
    type: dict
    keys:
      fib:
        type: dict
        keys:
          optimize:
            type: dict
            keys:
              prefixes:
                type: dict
                keys:
                  profile:
                    type: str
                    description: Pre-defined profile 'internet' or user-defined profile
                      name.
  ipv6_icmp_redirect:
    type: bool
  ipv6_prefix_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Prefix-list Name.
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "permit 1b11:3a00:22b0:0082::/64 eq 128"

                  '
  ipv6_standard_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "deny ipv6 any any"

                  '
  ipv6_static_routes:
    type: list
    items:
      type: dict
      keys:
        vrf:
          type: str
          convert_types:
          - int
        destination_address_prefix:
          type: str
          description: IPv6 Network/Mask.
        interface:
          type: str
        gateway:
          type: str
          description: IPv6 Address.
        track_bfd:
          type: bool
          description: Track next-hop using BFD.
        distance:
          type: int
          convert_types:
          - str
          min: 1
          max: 255
        tag:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        name:
          type: str
          description: Description.
        metric:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
  ipv6_unicast_routing:
    type: bool
  is_deployed:
    description: Key only used for documentation or validation purposes.
    type: bool
    default: true
  l2_protocol:
    type: dict
    keys:
      forwarding_profiles:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            protocols:
              type: list
              primary_key: name
              items:
                type: dict
                keys:
                  name:
                    type: str
                    valid_values:
                    - bfd per-link rfc-7130
                    - e-lmi
                    - isis
                    - lacp
                    - lldp
                    - macsec
                    - pause
                    - stp
                  forward:
                    type: bool
                  tagged_forward:
                    type: bool
                  untagged_forward:
                    type: bool
  lacp:
    type: dict
    description: Set Link Aggregation Control Protocol (LACP) parameters.
    keys:
      port_id:
        type: dict
        description: LACP port-ID range configuration.
        keys:
          range:
            type: dict
            keys:
              begin:
                type: int
                description: Minimum LACP port-ID range.
              end:
                type: int
                description: Maximum LACP port-ID range.
      rate_limit:
        type: dict
        description: Set LACPDU rate limit options.
        keys:
          default:
            type: bool
            description: Enable LACPDU rate limiting by default on all ports.
      system_priority:
        type: int
        description: Set local system LACP priority.
        min: 0
        max: 65535
  link_tracking_groups:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
        links_minimum:
          type: int
          min: 1
          max: 100000
        recovery_delay:
          type: int
          min: 0
          max: 3600
  lldp:
    type: dict
    keys:
      timer:
        type: int
      timer_reinitialization:
        type: str
      holdtime:
        type: int
      management_address:
        type: str
      vrf:
        type: str
        convert_types:
        - int
      receive_packet_tagged_drop:
        type: str
      tlvs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              valid_values:
              - link-aggregation
              - management-address
              - max-frame-size
              - med
              - port-description
              - port-vlan
              - power-via-mdi
              - system-capabilities
              - system-description
              - system-name
              - vlan-name
            transmit:
              type: bool
      run:
        type: bool
  load_interval:
    type: dict
    keys:
      default:
        type: int
        description: Default load interval in seconds.
        convert_types:
        - str
  local_users:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          description: Username.
          type: str
        disabled:
          type: bool
          description: 'If true, the user will be removed and all other settings are
            ignored.

            Useful for removing the default "admin" user.

            '
        privilege:
          type: int
          convert_types:
          - str
          min: 0
          max: 15
          description: 'Initial privilege level with local EXEC authorization.

            '
        role:
          type: str
          description: 'EOS RBAC Role to be assigned to the user such as "network-admin"
            or "network-operator".

            '
        sha512_password:
          type: str
          description: 'SHA512 Hash of Password.

            Must be the hash of the password. By default EOS salts the password with
            the username, so the simplest is to generate the hash on an EOS device
            using the same username.

            '
        no_password:
          type: bool
          description: 'If set a password will not be configured for this user. "sha512_password"
            MUST not be defined for this user.

            '
        ssh_key:
          type: str
        secondary_ssh_key:
          type: str
        shell:
          type: str
          description: 'Specify shell for the user.

            '
          valid_values:
          - /bin/bash
          - /bin/sh
          - /sbin/nologin
  logging:
    type: dict
    keys:
      console:
        type: str
        valid_values:
        - debugging
        - informational
        - notifications
        - warnings
        - errors
        - critical
        - alerts
        - emergencies
        - disabled
        description: 'Console logging severity level.

          '
      monitor:
        type: str
        valid_values:
        - debugging
        - informational
        - notifications
        - warnings
        - errors
        - critical
        - alerts
        - emergencies
        - disabled
        description: 'Monitor logging severity level.

          '
      buffered:
        type: dict
        keys:
          size:
            type: int
            convert_types:
            - str
            min: 10
            max: 2147483647
          level:
            type: str
            valid_values:
            - alerts
            - critical
            - debugging
            - emergencies
            - errors
            - informational
            - notifications
            - warnings
            - disabled
            description: 'Buffer logging severity level.

              '
      trap:
        type: str
        valid_values:
        - alerts
        - critical
        - debugging
        - emergencies
        - errors
        - informational
        - notifications
        - system
        - warnings
        - disabled
        description: 'Trap logging severity level.

          '
      synchronous:
        type: dict
        keys:
          level:
            type: str
            valid_values:
            - alerts
            - all
            - critical
            - debugging
            - emergencies
            - errors
            - informational
            - notifications
            - warnings
            - disabled
            description: 'Synchronous logging severity level.

              '
            default: critical
      format:
        type: dict
        keys:
          timestamp:
            type: str
            valid_values:
            - high-resolution
            - traditional
            - traditional timezone
            - traditional year
            - traditional timezone year
            - traditional year timezone
            description: Timestamp format.
          hostname:
            type: str
            valid_values:
            - fqdn
            - ipv4
            description: Hostname format in syslogs. For hostname _only_, remove the
              line. (default EOS CLI behaviour).
          sequence_numbers:
            type: bool
            description: 'Add sequence numbers to log messages.

              '
          rfc5424:
            type: bool
            description: 'Forward logs in RFC5424 format.

              '
      facility:
        type: str
        valid_values:
        - auth
        - cron
        - daemon
        - kern
        - local0
        - local1
        - local2
        - local3
        - local4
        - local5
        - local6
        - local7
        - lpr
        - mail
        - news
        - sys9
        - sys10
        - sys11
        - sys12
        - sys13
        - sys14
        - syslog
        - user
        - uucp
      source_interface:
        type: str
        description: Source Interface Name.
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              convert_types:
              - int
              description: VRF name.
            source_interface:
              type: str
              description: Source interface name.
            hosts:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Syslog server name.
                  protocol:
                    type: str
                    valid_values:
                    - tcp
                    - udp
                    default: udp
                  ports:
                    type: list
                    items:
                      type: int
                      convert_types:
                      - str
      policy:
        type: dict
        keys:
          match:
            type: dict
            keys:
              match_lists:
                type: list
                primary_key: name
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Match list.
                    action:
                      type: str
                      valid_values:
                      - discard
      event:
        type: dict
        keys:
          storm_control:
            type: dict
            keys:
              discards:
                type: dict
                keys:
                  global:
                    type: bool
                  interval:
                    type: int
                    convert_types:
                    - str
                    min: 10
                    max: 65535
                    description: Logging interval in seconds.
      level:
        type: list
        description: Configure logging severity.
        primary_key: facility
        convert_types:
        - dict
        items:
          type: dict
          keys:
            facility:
              type: str
            severity:
              type: str
              convert_types:
              - int
              description: 'Severity of facility. Below are the supported severites.

                emergencies    System is unusable                (severity=0)

                alerts         Immediate action needed           (severity=1)

                critical       Critical conditions               (severity=2)

                errors         Error conditions                  (severity=3)

                warnings       Warning conditions                (severity=4)

                notifications  Normal but significant conditions (severity=5)

                informational  Informational messages            (severity=6)

                debugging      Debugging messages                (severity=7)

                <0-7>          Severity level value'
              valid_values:
              - alerts
              - critical
              - debugging
              - emergencies
              - errors
              - informational
              - notifications
              - warnings
              - '0'
              - '1'
              - '2'
              - '3'
              - '4'
              - '5'
              - '6'
              - '7'
  loopback_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Loopback interface name e.g. "Loopback0".
        description:
          type: str
        shutdown:
          type: bool
        vrf:
          type: str
          description: VRF name.
          convert_types:
          - int
        ip_address:
          type: str
          description: IPv4_address/Mask.
        ip_address_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask.
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask.
        ip_proxy_arp:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        mpls:
          type: dict
          keys:
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
        isis_enable:
          type: str
          description: ISIS instance name.
        isis_bfd:
          type: bool
          description: Enable BFD for ISIS.
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        node_segment:
          type: dict
          keys:
            ipv4_index:
              type: int
              convert_types:
              - str
            ipv6_index:
              type: int
              convert_types:
              - str
        eos_cli:
          type: str
          description: EOS CLI rendered directly on the loopback interface in the
            final EOS configuration.
  mac_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: MAC Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        entries:
          type: list
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
              action:
                type: str
  mac_address_table:
    type: dict
    keys:
      aging_time:
        type: int
        description: Aging time in seconds.
        convert_types:
        - str
      notification_host_flap:
        type: dict
        keys:
          logging:
            type: bool
          detection:
            type: dict
            keys:
              window:
                type: int
                min: 2
                max: 300
                convert_types:
                - str
              moves:
                type: int
                min: 2
                max: 10
                convert_types:
                - str
  mac_security:
    type: dict
    display_name: MAC Security (MACsec)
    keys:
      license:
        type: dict
        keys:
          license_name:
            type: str
            required: true
          license_key:
            type: str
            required: true
      fips_restrictions:
        type: bool
      profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Profile-Name.
            cipher:
              type: str
              valid_values:
              - aes128-gcm
              - aes128-gcm-xpn
              - aes256-gcm
              - aes256-gcm-xpn
            connection_keys:
              type: list
              primary_key: id
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  id:
                    type: str
                  encrypted_key:
                    type: str
                  fallback:
                    type: bool
            mka:
              type: dict
              keys:
                key_server_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 255
                session:
                  type: dict
                  keys:
                    rekey_period:
                      type: int
                      convert_types:
                      - str
                      min: 30
                      max: 100000
                      description: Rekey period in seconds.
            sci:
              type: bool
            l2_protocols:
              type: dict
              keys:
                ethernet_flow_control:
                  type: dict
                  keys:
                    mode:
                      type: str
                      required: true
                      valid_values:
                      - encrypt
                      - bypass
                lldp:
                  type: dict
                  keys:
                    mode:
                      type: str
                      required: true
                      valid_values:
                      - bypass
                      - bypass unauthorized
  maintenance:
    type: dict
    display_name: Maintenance Mode
    keys:
      default_interface_profile:
        type: str
        description: 'Name of default Interface Profile.

          '
      default_bgp_profile:
        type: str
        description: 'Name of default BGP Profile.

          '
      default_unit_profile:
        type: str
        description: 'Name of default Unit Profile.

          '
      interface_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
            rate_monitoring:
              type: dict
              keys:
                load_interval:
                  type: int
                  convert_types:
                  - str
                  description: 'Load Interval in Seconds.

                    '
                threshold:
                  type: int
                  convert_types:
                  - str
                  description: 'Threshold in kbps.

                    '
            shutdown:
              type: dict
              keys:
                max_delay:
                  type: int
                  convert_types:
                  - str
                  description: 'Max delay in seconds.

                    '
      bgp_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: BGP Profile Name.
            initiator:
              type: dict
              keys:
                route_map_inout:
                  type: str
                  description: Route Map.
      unit_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Unit Profile Name.
            on_boot:
              type: dict
              keys:
                duration:
                  type: int
                  convert_types:
                  - str
                  min: 300
                  max: 3600
                  description: 'On-boot in seconds.

                    '
      units:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Unit Name.
            quiesce:
              type: bool
            profile:
              type: str
              description: 'Name of Unit Profile.

                '
            groups:
              type: dict
              keys:
                bgp_groups:
                  type: list
                  items:
                    type: str
                    description: 'Name of BGP Group.

                      '
                interface_groups:
                  type: list
                  items:
                    type: str
                    description: 'Name of Interface Group.

                      '
  management_accounts:
    type: dict
    keys:
      password:
        type: dict
        keys:
          policy:
            type: str
  management_api_gnmi:
    type: dict
    keys:
      provider:
        type: str
        default: eos-native
      transport:
        type: dict
        keys:
          grpc:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Transport name.
                ssl_profile:
                  type: str
                  description: SSL profile name.
                vrf:
                  type: str
                  description: VRF name is optional.
                  convert_types:
                  - int
                notification_timestamp:
                  type: str
                  valid_values:
                  - send-time
                  - last-change-time
                  description: 'Per the gNMI specification, the default timestamp
                    field of a notification message is set to be

                    the time at which the value of the underlying data source changes
                    or when the reported event takes place.

                    In order to facilitate integration in legacy environments oriented
                    around polling style operations,

                    an option to support overriding the timestamp field to the send-time
                    is available from EOS 4.27.0F.

                    '
                ip_access_group:
                  type: str
                  description: ACL name.
                port:
                  type: int
                  description: 'GNMI port.

                    Make sure to update the control-plane ACL accordingly in order
                    for the service to be reachable by external applications.

                    '
                  convert_types:
                  - str
          grpc_tunnels:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Transport name.
                shutdown:
                  type: bool
                  description: Operational status of the gRPC tunnel.
                tunnel_ssl_profile:
                  type: str
                  description: Tunnel SSL profile name.
                gnmi_ssl_profile:
                  type: str
                  description: gNMI SSL profile name.
                vrf:
                  type: str
                  description: VRF name.
                  convert_types:
                  - int
                destination:
                  type: dict
                  keys:
                    address:
                      type: str
                      required: true
                      description: IP address or hostname.
                    port:
                      type: int
                      min: 1
                      max: 65535
                      required: true
                      convert_types:
                      - str
                      description: TCP Port.
                local_interface:
                  type: dict
                  keys:
                    name:
                      type: str
                      required: true
                      description: Interface name.
                    port:
                      type: int
                      min: 1
                      max: 65535
                      required: true
                      convert_types:
                      - str
                      description: TCP Port.
                target:
                  type: dict
                  keys:
                    use_serial_number:
                      type: bool
                      description: Use serial number as the Target ID.
                    target_ids:
                      type: list
                      description: 'Target IDs as a list.

                        '
                      items:
                        type: str
      enable_vrfs:
        type: list
        deprecation:
          warning: true
          new_key: transport.grpc
          remove_in_version: 5.0.0
        primary_key: name
        convert_types:
        - dict
        description: 'These should not be mixed with the new keys above.

          '
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
              convert_types:
              - int
            access_group:
              type: str
              description: Standard IPv4 ACL name.
      octa:
        type: dict
        deprecation:
          warning: true
          new_key: provider
          remove_in_version: 5.0.0
        description: 'These should not be mixed with the new keys above.

          Octa activates `eos-native` provider and it is the only provider currently
          supported by EOS.

          '
  management_api_http:
    type: dict
    keys:
      enable_http:
        type: bool
      enable_https:
        type: bool
      https_ssl_profile:
        description: SSL Profile Name.
        type: str
      default_services:
        type: bool
        description: 'Enable default services: capi-doc and tapagg.'
      enable_vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              description: VRF Name.
              type: str
              convert_types:
              - int
            access_group:
              description: Standard IPv4 ACL name.
              type: str
            ipv6_access_group:
              description: Standard IPv6 ACL name.
              type: str
      protocol_https_certificate:
        type: dict
        keys:
          certificate:
            type: str
            description: Name of certificate; private key must also be specified.
          private_key:
            type: str
            description: Name of private key; certificate must also be specified.
  management_api_models:
    type: dict
    keys:
      providers:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              valid_values:
              - sysdb
              - smash
            paths:
              type: list
              items:
                type: dict
                keys:
                  path:
                    type: str
                  disabled:
                    type: bool
                    default: false
  management_console:
    type: dict
    keys:
      idle_timeout:
        type: int
        min: 0
        max: 86400
        convert_types:
        - str
  management_cvx:
    type: dict
    keys:
      shutdown:
        type: bool
      server_hosts:
        type: list
        items:
          type: str
          description: IP or hostname.
      source_interface:
        type: str
        description: Interface name.
      vrf:
        type: str
        description: VRF Name.
        convert_types:
        - int
  management_defaults:
    type: dict
    keys:
      secret:
        type: dict
        keys:
          hash:
            type: str
            valid_values:
            - md5
            - sha512
  management_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Management Interface Name.
        description:
          type: str
        shutdown:
          type: bool
        speed:
          type: str
          description: Speed should be set in the format `<interface_speed>` or `forced
            <interface_speed>` or `auto <interface_speed>`.
        mtu:
          type: int
        vrf:
          type: str
          description: VRF Name.
          convert_types:
          - int
        ip_address:
          type: str
          description: IPv4_address/Mask.
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask.
        type:
          type: str
          valid_values:
          - oob
          - inband
          default: oob
          description: For documentation purposes only.
        gateway:
          type: str
          description: IPv4 address of default gateway in management VRF.
        ipv6_gateway:
          type: str
          description: IPv6 address of default gateway in management VRF.
        mac_address:
          type: str
          description: MAC address.
        lldp:
          type: dict
          keys:
            transmit:
              type: bool
            receive:
              type: bool
            ztp_vlan:
              type: int
              convert_types:
              - str
              description: ZTP vlan number.
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the management interface
            in the final EOS configuration.
  management_security:
    type: dict
    keys:
      entropy_source:
        type: str
        deprecation:
          warning: true
          remove_in_version: v5.0.0
          new_key: entropy_sources
      entropy_sources:
        type: dict
        description: Source of entropy.
        keys:
          hardware:
            type: bool
            description: Use a hardware based source.
          haveged:
            type: bool
            description: Use the HAVEGE algorithm.
          cpu_jitter:
            type: bool
            description: Use the Jitter RNG algorithm of a CPU based source.
          hardware_exclusive:
            type: bool
            description: Only use entropy from the hardware source.
      password:
        type: dict
        keys:
          minimum_length:
            type: int
            min: 1
            max: 32
            convert_types:
            - str
          encryption_key_common:
            type: bool
          encryption_reversible:
            type: str
          policies:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                minimum:
                  type: dict
                  keys:
                    digits:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                    length:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                    lower:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                    special:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                    upper:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                maximum:
                  type: dict
                  keys:
                    repetitive:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
                    sequential:
                      type: int
                      min: 1
                      max: 65535
                      convert_types:
                      - str
      ssl_profiles:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
            tls_versions:
              type: str
              description: "List of allowed TLS versions as string.\nExamples:\n  -
                \"1.0\"\n  - \"1.0 1.1\"\n"
              convert_types:
              - float
            cipher_list:
              type: str
              description: 'cipher_list syntax follows the openssl cipher strings
                format.

                Colon (:) separated list of allowed ciphers as a string

                '
            trust_certificate:
              type: dict
              keys:
                certificates:
                  type: list
                  description: "List of trust certificate names.\nExamples:\n  - test1.crt\n
                    \ - test2.crt\n"
                  items:
                    type: str
                requirement:
                  type: dict
                  keys:
                    basic_constraint_ca:
                      type: bool
                    hostname_fqdn:
                      type: bool
                      description: 'Enforce hostname to be FQDN without wildcard.

                        '
                policy_expiry_date_ignore:
                  type: bool
                system:
                  type: bool
                  description: 'Use system-supplied trust certificates.

                    '
            chain_certificate:
              type: dict
              keys:
                certificates:
                  type: list
                  description: "List of chain certificate names.\nExamples:\n  - chain1.crt\n
                    \ - chain2.crt\n"
                  items:
                    type: str
                requirement:
                  type: dict
                  keys:
                    basic_constraint_ca:
                      type: bool
                    include_root_ca:
                      type: bool
            certificate:
              type: dict
              keys:
                file:
                  type: str
                key:
                  type: str
            certificate_revocation_lists:
              type: list
              description: 'List of CRLs (Certificate Revocation List).

                If specified, one CRL needs to be provided for every certificate in
                the chain, even if the revocation list in the CRL is empty.

                '
              items:
                type: str
  management_ssh:
    type: dict
    keys:
      access_groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Standard ACL Name.
            vrf:
              type: str
              description: VRF Name.
              convert_types:
              - int
      ipv6_access_groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Standard ACL Name.
            vrf:
              type: str
              description: VRF Name.
              convert_types:
              - int
      idle_timeout:
        type: int
        convert_types:
        - str
        min: 0
        max: 86400
        description: Idle timeout in minutes.
      cipher:
        description: Cryptographic ciphers for SSH to use.
        type: list
        items:
          type: str
      key_exchange:
        description: Cryptographic key exchange methods for SSH to use.
        type: list
        items:
          type: str
      mac:
        description: Cryptographic MAC algorithms for SSH to use.
        type: list
        items:
          type: str
      fips_restrictions:
        type: bool
        description: Use FIPS compliant algorithms.
      hostkey:
        type: dict
        keys:
          server:
            description: SSH host key settings.
            type: list
            items:
              type: str
          server_cert:
            type: str
            description: Configure switch's hostkey cert file.
          client_strict_checking:
            type: bool
            description: Enforce strict host key checking.
      enable:
        description: Enable SSH daemon.
        type: bool
      connection:
        type: dict
        keys:
          limit:
            type: int
            convert_types:
            - str
            min: 1
            max: 100
            description: Maximum total number of SSH sessions to device.
          per_host:
            type: int
            convert_types:
            - str
            min: 1
            max: 20
            description: Maximum number of SSH sessions to device from a single host.
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF Name.
              convert_types:
              - int
            enable:
              description: Enable SSH in VRF.
              type: bool
      log_level:
        type: str
        description: SSH daemon log level.
      client_alive:
        type: dict
        keys:
          count_max:
            type: int
            convert_types:
            - str
            min: 1
            max: 1000
            description: Number of keep-alive packets that can be sent without a response
              before the connection is assumed dead.
          interval:
            type: int
            convert_types:
            - str
            min: 1
            max: 1000
            description: Time period (in seconds) to send SSH keep-alive packets.
  management_tech_support:
    type: dict
    keys:
      policy_show_tech_support:
        type: dict
        keys:
          exclude_commands:
            type: list
            items:
              type: dict
              keys:
                command:
                  type: str
                  description: Command to exclude from tech-support.
                type:
                  type: str
                  valid_values:
                  - text
                  - json
                  default: text
                  description: The supported values for type are platform dependent.
          include_commands:
            type: list
            items:
              type: dict
              keys:
                command:
                  type: str
                  description: Command to include in tech-support.
  match_list_input:
    type: dict
    display_name: Match Lists
    keys:
      prefix_ipv4:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Prefix-List Name.
            prefixes:
              type: list
              required: true
              min_length: 1
              description: List of IPv4 prefixes (with the subnet mask e.g. 192.0.2.0/24).
              items:
                type: str
      prefix_ipv6:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Prefix-List Name.
            prefixes:
              type: list
              required: true
              min_length: 1
              description: List of IPv6 prefixes (with the subnet mask e.g. 2001:db8:abcd:0013::/64).
              items:
                type: str
      string:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Match-list Name.
            sequence_numbers:
              type: list
              required: true
              primary_key: sequence
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  sequence:
                    type: int
                    description: Sequence ID.
                    convert_types:
                    - str
                  match_regex:
                    type: str
                    required: true
                    description: Regular Expression.
  mcs_client:
    type: dict
    keys:
      shutdown:
        type: bool
      cvx_secondary:
        type: dict
        keys:
          name:
            type: str
          shutdown:
            type: bool
          server_hosts:
            type: list
            items:
              type: str
              description: IP or hostname.
  metadata:
    type: dict
    description: 'The data under `metadata` is used for documentation, validation
      or integration purposes.

      It will not affect the generated EOS configuration.'
    keys:
      platform:
        type: str
      system_mac_address:
        type: str
      cv_tags:
        type: dict
        keys:
          device_tags:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  required: true
                value:
                  type: str
                  required: true
          interface_tags:
            type: list
            items:
              type: dict
              keys:
                interface:
                  type: str
                  required: true
                tags:
                  type: list
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
                        required: true
                      value:
                        type: str
                        required: true
      cv_pathfinder:
        type: dict
        description: Metadata used for CV Pathfinder visualization on CloudVision.
        keys:
          role:
            type: str
          region:
            type: str
          zone:
            type: str
          site:
            type: str
          vtep_ip:
            type: str
          ssl_profile:
            type: str
          address:
            type: str
          pathfinders:
            type: list
            items:
              type: dict
              keys:
                vtep_ip:
                  type: str
                  required: true
          interfaces:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                carrier:
                  type: str
                circuit_id:
                  type: str
                pathgroup:
                  type: str
                public_ip:
                  type: str
          pathgroups:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  required: true
                carriers:
                  type: list
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
                imported_carriers:
                  type: list
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
          regions:
            type: list
            items:
              type: dict
              keys:
                id:
                  type: int
                name:
                  type: str
                zones:
                  type: list
                  items:
                    type: dict
                    keys:
                      id:
                        type: int
                      name:
                        type: str
                      sites:
                        type: list
                        items:
                          type: dict
                          keys:
                            id:
                              type: int
                            name:
                              type: str
                            location:
                              type: dict
                              keys:
                                address:
                                  type: str
          vrfs:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                vni:
                  type: int
                avts:
                  type: list
                  items:
                    type: dict
                    keys:
                      constraints:
                        type: dict
                        keys:
                          jitter:
                            type: int
                          latency:
                            type: int
                          lossrate:
                            type: str
                            convert_types:
                            - float
                      description:
                        type: str
                      id:
                        type: int
                      name:
                        type: str
                      pathgroups:
                        type: list
                        items:
                          type: dict
                          keys:
                            name:
                              type: str
                            preference:
                              type: str
          internet_exit_policies:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  required: true
                type:
                  type: str
                  required: true
                city:
                  type: str
                  required: true
                country:
                  type: str
                  required: true
                upload_bandwidth:
                  type: int
                download_bandwidth:
                  type: int
                firewall:
                  type: bool
                  required: true
                ips_control:
                  type: bool
                  required: true
                acceptable_use_policy:
                  type: bool
                  required: true
                vpn_credentials:
                  type: list
                  required: true
                  items:
                    type: dict
                    keys:
                      fqdn:
                        type: str
                        required: true
                      vpn_type:
                        type: str
                        required: true
                      pre_shared_key:
                        type: str
                        required: true
                tunnels:
                  type: list
                  required: true
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
                        required: true
                      preference:
                        type: str
                        required: true
  mlag_configuration:
    type: dict
    display_name: Multi-Chassis Link Aggregation (MLAG) Configuration
    keys:
      domain_id:
        type: str
      heartbeat_interval:
        type: int
        description: Heartbeat interval in milliseconds.
        convert_types:
        - str
      local_interface:
        description: Local Interface Name.
        type: str
      peer_address:
        type: str
        description: IPv4 or IPv6 Address.
      peer_address_heartbeat:
        type: dict
        keys:
          peer_ip:
            type: str
            description: IPv4 or IPv6 Address.
          vrf:
            description: VRF Name.
            type: str
            convert_types:
            - int
      dual_primary_detection_delay:
        type: int
        description: Delay in seconds.
        min: 0
        max: 86400
        convert_types:
        - str
      dual_primary_recovery_delay_mlag:
        type: int
        description: Delay in seconds.
        min: 0
        max: 86400
        convert_types:
        - str
      dual_primary_recovery_delay_non_mlag:
        type: int
        description: Delay in seconds.
        min: 0
        max: 86400
        convert_types:
        - str
      peer_link:
        description: Port-Channel interface name.
        type: str
      reload_delay_mlag:
        type: str
        description: Delay in seconds <0-86400> or 'infinity'.
        convert_types:
        - int
      reload_delay_non_mlag:
        type: str
        description: Delay in seconds <0-86400> or 'infinity'.
        convert_types:
        - int
  monitor_connectivity:
    type: dict
    keys:
      shutdown:
        type: bool
      interval:
        type: int
        convert_types:
        - str
      interface_sets:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
            interfaces:
              type: str
              description: 'Interface range(s) should be of same type, Ethernet, Loopback,
                Management etc.

                Multiple interface ranges can be specified separated by ",".

                '
      local_interfaces:
        type: str
      address_only:
        type: bool
        description: 'PREVIEW: This key is in preview.

          When address-only is configured, the source IP of the packet is set to the
          interface

          IP but the packet may exit the device via a different interface.

          When set to `false`, the probe uses the interface to exit the device.

          Not supported yet in EOS.'
        default: true
      hosts:
        type: list
        items:
          type: dict
          keys:
            name:
              description: Host Name.
              type: str
            description:
              type: str
            ip:
              type: str
            local_interfaces:
              type: str
            address_only:
              type: bool
              description: 'PREVIEW: This key is in preview.

                When address-only is configured, the source IP of the packet is set
                to the interface

                IP but the packet may exit the device via a different interface.

                When set to `false`, the probe uses the interface to exit the device.

                Not supported yet in EOS.'
              default: true
            url:
              type: str
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              description: VRF Name.
              type: str
              convert_types:
              - int
            description:
              type: str
            interface_sets:
              type: list
              items:
                type: dict
                keys:
                  name:
                    type: str
                  interfaces:
                    type: str
            local_interfaces:
              type: str
            address_only:
              type: bool
              description: 'PREVIEW: This key is in preview.

                When address-only is configured, the source IP of the packet is set
                to the interface

                IP but the packet may exit the device via a different interface.

                When set to `false`, the probe uses the interface to exit the device.

                Not supported yet in EOS.'
              default: true
            hosts:
              type: list
              items:
                type: dict
                keys:
                  name:
                    description: Host name.
                    type: str
                  description:
                    type: str
                  ip:
                    type: str
                  local_interfaces:
                    type: str
                  address_only:
                    type: bool
                    description: 'PREVIEW: This key is in preview.

                      When address-only is configured, the source IP of the packet
                      is set to the interface

                      IP but the packet may exit the device via a different interface.

                      When set to `false`, the probe uses the interface to exit the
                      device.

                      Not supported yet in EOS.'
                    default: true
                  url:
                    type: str
  monitor_layer1:
    type: dict
    description: Enable SYSLOG messages on transceiver SMBus communication failures.
    keys:
      enabled:
        type: bool
        required: true
        description: Enable monitor layer1.
      logging_mac_fault:
        type: bool
        description: Enable MAC fault logging.
      logging_transceiver:
        type: dict
        description: Configure transceiver monitoring logging.
        keys:
          dom:
            type: bool
            description: Enable transceiver Digital Optical Monitoring (DOM) logging.
          communication:
            type: bool
            description: Enable transceiver SMBus fail and reset logging.
  monitor_sessions:
    type: list
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Session Name.
        sources:
          type: list
          items:
            type: dict
            keys:
              name:
                type: str
                description: Interface name, range or comma separated list.
              direction:
                type: str
                valid_values:
                - rx
                - tx
                - both
              access_group:
                type: dict
                keys:
                  type:
                    type: str
                    valid_values:
                    - ip
                    - ipv6
                    - mac
                  name:
                    description: ACL Name.
                    type: str
                  priority:
                    type: int
                    convert_types:
                    - str
        destinations:
          type: list
          items:
            type: str
            description: '''cpu'' or interface name, range or comma separated list.'
        encapsulation_gre_metadata_tx:
          type: bool
        header_remove_size:
          type: int
          description: Number of bytes to remove from header.
          convert_types:
          - str
        access_group:
          type: dict
          keys:
            type:
              type: str
              valid_values:
              - ip
              - ipv6
              - mac
            name:
              description: ACL Name.
              type: str
        rate_limit_per_ingress_chip:
          type: str
          description: "Ratelimit and unit as string.\nExamples:\n  \"100000 bps\"\n
            \ \"100 kbps\"\n  \"10 mbps\"\n"
        rate_limit_per_egress_chip:
          type: str
          description: "Ratelimit and unit as string.\nExamples:\n  \"100000 bps\"\n
            \ \"100 kbps\"\n  \"10 mbps\"\n"
        sample:
          type: int
          convert_types:
          - str
        truncate:
          type: dict
          keys:
            enabled:
              type: bool
            size:
              type: int
              description: Size in bytes.
              convert_types:
              - str
  monitor_telemetry_influx:
    type: dict
    keys:
      vrf:
        type: str
      destinations:
        type: list
        primary_key: name
        description: Configure telemetry output destinations.
        items:
          type: dict
          keys:
            name:
              type: str
              description: InfluxDB connection name.
            database:
              type: str
              description: Set name of the database.
            data_retention_policy:
              type: str
            url:
              type: str
              description: It only accepts http(s), udp and unix domain destination
                URL.
              pattern: (http(s)?|udp|unix)://.+
            username:
              type: str
            password:
              type: str
            password_type:
              type: str
              convert_types:
              - int
              valid_values:
              - '0'
              - '7'
              - 8a
              default: '7'
      source_group_standard_disabled:
        type: bool
        description: Disable standard set of telemetry.
      source_sockets:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Label of the socket connection.
            connection_limit:
              type: int
              min: 0
              max: 4294967295
              convert_types:
              - str
            url:
              type: str
              description: It only accepts http(s), udp and unix domain socket URL.
              pattern: (http(s)?|udp|unix)://.+
      tags:
        type: list
        primary_key: name
        description: Extra tags added to the telemetry output.
        items:
          type: dict
          keys:
            name:
              type: str
              description: Key of the global tag pair.
            value:
              type: str
              required: true
              description: Value of the global tag pair.
  mpls:
    type: dict
    keys:
      ip:
        type: bool
      ldp:
        type: dict
        keys:
          interface_disabled_default:
            type: bool
          router_id:
            type: str
          shutdown:
            type: bool
          transport_address_interface:
            description: Interface Name.
            type: str
  name_server:
    deprecation:
      warning: true
      new_key: ip_name_servers
      remove_in_version: v5.0.0
    type: dict
    keys:
      source:
        type: dict
        keys:
          vrf:
            description: VRF Name.
            type: str
            convert_types:
            - int
      nodes:
        type: list
        items:
          type: str
  ntp:
    type: dict
    keys:
      local_interface:
        type: dict
        keys:
          name:
            type: str
            description: Source interface.
          vrf:
            type: str
            description: VRF name.
            convert_types:
            - int
      servers:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IP or hostname e.g., 2.2.2.55, 2001:db8::55, ie.pool.ntp.org.
            burst:
              type: bool
            iburst:
              type: bool
            key:
              type: int
              min: 1
              max: 65535
              convert_types:
              - str
            local_interface:
              type: str
              description: Source interface.
            maxpoll:
              type: int
              min: 3
              max: 17
              convert_types:
              - str
              description: Value of maxpoll between 3 - 17 (Logarithmic).
            minpoll:
              type: int
              min: 3
              max: 17
              convert_types:
              - str
              description: Value of minpoll between 3 - 17 (Logarithmic).
            preferred:
              type: bool
            version:
              type: int
              min: 1
              max: 4
              convert_types:
              - str
            vrf:
              type: str
              description: VRF name.
              convert_types:
              - int
      authenticate:
        type: bool
      authenticate_servers_only:
        type: bool
      authentication_keys:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              min: 1
              max: 65534
              convert_types:
              - str
              description: Key identifier.
            hash_algorithm:
              type: str
              valid_values:
              - md5
              - sha1
            key:
              type: str
              description: Obfuscated key.
            key_type:
              type: str
              convert_types:
              - int
              valid_values:
              - '0'
              - '7'
              - 8a
      trusted_keys:
        type: str
        description: List of trusted-keys as string ex. 10-12,15.
        convert_types:
        - int
  patch_panel:
    type: dict
    keys:
      patches:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
            enabled:
              type: bool
            connectors:
              type: list
              primary_key: id
              convert_types:
              - dict
              min_length: 2
              max_length: 2
              description: Must have exactly two connectors to a patch of which at
                least one must be of type "interface".
              items:
                type: dict
                keys:
                  id:
                    type: str
                    convert_types:
                    - int
                  type:
                    type: str
                    valid_values:
                    - interface
                    - pseudowire
                    required: true
                  endpoint:
                    type: str
                    description: 'String with relevant endpoint depending on type.

                      Examples:

                      - "Ethernet1"

                      - "Ethernet1 dot1q vlan 123"

                      - "bgp vpws TENANT_A pseudowire VPWS_PW_1"

                      - "ldp LDP_PW_1"

                      '
                    required: true
  peer_filters:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Peer-filter Name.
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              match:
                type: str
                required: true
                description: 'Match as string.

                  Example: "as-range 1-100 result accept"

                  '
  platform:
    type: dict
    description: Every key below this point is platform dependent.
    keys:
      trident:
        type: dict
        keys:
          forwarding_table_partition:
            type: str
            convert_types:
            - int
          mmu:
            type: dict
            description: 'Memory Management Unit settings.

              '
            keys:
              active_profile:
                type: str
                description: 'The queue profile to be applied to the platform.

                  '
              queue_profiles:
                type: list
                primary_key: name
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                    multicast_queues:
                      type: list
                      primary_key: id
                      convert_types:
                      - dict
                      items:
                        type: dict
                        keys:
                          id:
                            type: int
                            convert_types:
                            - str
                            required: true
                            min: 0
                            max: 7
                          unit:
                            type: str
                            valid_values:
                            - bytes
                            - cells
                            description: 'Unit to be used for the reservation value.
                              If not specified, default is bytes.

                              '
                          reserved:
                            type: int
                            convert_types:
                            - str
                            description: 'Amount of memory that should be reserved
                              for this

                              queue.

                              '
                          threshold:
                            type: str
                            convert_types:
                            - int
                            description: 'Dynamic Shared Memory threshold.

                              '
                          drop:
                            type: dict
                            keys:
                              precedence:
                                type: int
                                valid_values:
                                - 1
                                - 2
                                required: true
                              threshold:
                                type: str
                                required: true
                                convert_types:
                                - int
                                description: 'Drop Threshold. This value may also
                                  be fractions.

                                  Example: 7/8 or 3/4 or 1/2

                                  '
                    unicast_queues:
                      type: list
                      primary_key: id
                      convert_types:
                      - dict
                      items:
                        type: dict
                        keys:
                          id:
                            type: int
                            convert_types:
                            - str
                            required: true
                            min: 0
                            max: 7
                          unit:
                            type: str
                            valid_values:
                            - bytes
                            - cells
                            description: 'Unit to be used for the reservation value.
                              If not specified, default is bytes.

                              '
                          reserved:
                            type: int
                            convert_types:
                            - str
                            description: 'Amount of memory that should be reserved
                              for this

                              queue.

                              '
                          threshold:
                            type: str
                            convert_types:
                            - int
                            description: 'Dynamic Shared Memory threshold.

                              '
                          drop:
                            type: dict
                            keys:
                              precedence:
                                type: int
                                valid_values:
                                - 1
                                - 2
                                required: true
                              threshold:
                                type: str
                                required: true
                                convert_types:
                                - int
                                description: 'Drop Threshold. This value may also
                                  be fractions.

                                  Example: 7/8 or 3/4 or 1/2

                                  '
      sand:
        type: dict
        description: Most of the platform sand options are hardware dependent and
          optional.
        keys:
          qos_maps:
            type: list
            items:
              type: dict
              keys:
                traffic_class:
                  type: int
                  min: 0
                  max: 7
                  convert_types:
                  - str
                to_network_qos:
                  type: int
                  min: 0
                  max: 63
                  convert_types:
                  - str
          lag:
            type: dict
            keys:
              hardware_only:
                type: bool
              mode:
                type: str
          forwarding_mode:
            type: str
          multicast_replication:
            type: dict
            keys:
              default:
                type: str
                valid_values:
                - ingress
                - egress
          mdb_profile:
            type: str
            description: 'Sand platforms MDB Profile configuration. Note: l3-xxxl
              does not support MLAG.'
            valid_values:
            - balanced
            - balanced-xl
            - l3
            - l3-xl
            - l3-xxl
            - l3-xxxl
      sfe:
        type: dict
        description: Sfe (Software Forwarding Engine) settings.
        keys:
          data_plane_cpu_allocation_max:
            type: int
            description: Maximum number of CPUs used for data plane traffic forwarding.
            convert_types:
            - str
            min: 1
            max: 128
  poe:
    type: dict
    keys:
      reboot:
        type: dict
        description: Set the global PoE power behavior for PoE ports when the system
          is rebooted.
        keys:
          action:
            type: str
            valid_values:
            - power-off
            - maintain
            description: PoE action for interface. By default in EOS, reboot action
              is set to power-off.
      interface_shutdown:
        type: dict
        description: Set the global PoE power behavior for PoE ports when ports are
          admin down.
        keys:
          action:
            type: str
            valid_values:
            - power-off
            - maintain
            description: PoE action for interface. By default in EOS, interface shutdown
              action is set to maintain.
  policy_maps:
    type: dict
    keys:
      pbr:
        type: list
        description: PBR Policy-Maps.
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy-Map Name.
            classes:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Class Name.
                  index:
                    type: int
                    convert_types:
                    - str
                  drop:
                    description: '''drop'' and ''set'' are mutually exclusive.'
                    type: bool
                  set:
                    description: 'Set Nexthop

                      ''drop'' and ''set'' are mutually exclusive.

                      '
                    type: dict
                    keys:
                      nexthop:
                        type: dict
                        keys:
                          ip_address:
                            type: str
                            description: IPv4 or IPv6 Address.
                          recursive:
                            type: bool
      qos:
        type: list
        description: QOS Policy-Maps.
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy-Map Name.
            classes:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Class Name.
                  set:
                    type: dict
                    keys:
                      cos:
                        type: int
                        convert_types:
                        - str
                      dscp:
                        type: str
                        convert_types:
                        - int
                      traffic_class:
                        type: int
                        convert_types:
                        - str
                      drop_precedence:
                        type: int
                        convert_types:
                        - str
                  police:
                    type: dict
                    keys:
                      rate:
                        type: int
                        convert_types:
                        - str
                        description: 'Specify rate.

                          Range in kbps <8-200000000>.'
                      rate_unit:
                        type: str
                        valid_values:
                        - bps
                        - kbps
                        - mbps
                        - pps
                        default: bps
                      rate_burst_size:
                        type: int
                        convert_types:
                        - str
                        description: Range in bytes <256-128000000>.
                      rate_burst_size_unit:
                        type: str
                        valid_values:
                        - bytes
                        - kbytes
                        - mbytes
                        - packets
                        default: bytes
                      action:
                        type: dict
                        keys:
                          type:
                            description: Set action for policed traffic.
                            type: str
                            valid_values:
                            - dscp
                            - drop-precedence
                          dscp_value:
                            description: Set when action.type is set to "dscp".
                            type: str
                            convert_types:
                            - int
                      higher_rate:
                        type: int
                        convert_types:
                        - str
                        description: 'Specify higher rate.

                          Range in kbps <lower_rate in kbps + 8 - lower_rate in kbps
                          + 200000000>.'
                      higher_rate_unit:
                        type: str
                        valid_values:
                        - bps
                        - kbps
                        - mbps
                        - pps
                        default: bps
                      higher_rate_burst_size:
                        type: int
                        convert_types:
                        - str
                        description: Range in bytes <256-128000000>.
                      higher_rate_burst_size_unit:
                        type: str
                        valid_values:
                        - bytes
                        - kbytes
                        - mbytes
                        - packets
                        default: bytes
  port_channel_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
        description:
          type: str
        logging:
          type: dict
          keys:
            event:
              type: dict
              keys:
                link_status:
                  type: bool
                storm_control_discards:
                  type: bool
                  description: 'Discards due to storm-control.

                    '
        shutdown:
          type: bool
        l2_mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
          description: '"l2_mtu" should only be defined for platforms supporting the
            "l2 mtu" CLI.

            '
        l2_mru:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
          description: '"l2_mru" should only be defined for platforms supporting the
            "l2 mru" CLI.

            '
        vlans:
          type: str
          convert_types:
          - int
          description: 'List of switchport vlans as string.

            For a trunk port this would be a range like "1-200,300".

            For an access port this would be a single vlan "123".

            '
        snmp_trap_link_change:
          type: bool
        type:
          type: str
          valid_values:
          - routed
          - switched
          - l3dot1q
          - l2dot1q
          description: 'l3dot1q and l2dot1q are used for sub-interfaces. The parent
            interface should be defined as routed.

            Interface will not be listed in device documentation, unless "type" is
            set.

            '
        encapsulation_dot1q_vlan:
          type: int
          description: VLAN tag to configure on sub-interface.
          convert_types:
          - str
        vrf:
          type: str
          description: VRF name.
          convert_types:
          - int
        encapsulation_vlan:
          type: dict
          keys:
            client:
              type: dict
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Client VLAN ID.
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Client Outer VLAN ID.
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Client Inner VLAN ID.
                unmatched:
                  type: bool
            network:
              type: dict
              description: Network encapsulation are all optional, and skipped if
                using client unmatched.
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Network VLAN ID.
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Network Outer VLAN ID.
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Network Inner VLAN ID.
                client:
                  type: bool
        vlan_id:
          type: int
          convert_types:
          - str
          min: 1
          max: 4094
        mode:
          type: str
          valid_values:
          - access
          - dot1q-tunnel
          - trunk
          - trunk phone
        native_vlan:
          type: int
          convert_types:
          - str
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence.
        native_vlan_tag:
          type: bool
          default: false
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence.
        link_tracking_groups:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Group name.
              direction:
                type: str
                valid_values:
                - upstream
                - downstream
        phone:
          type: dict
          keys:
            trunk:
              type: str
              valid_values:
              - tagged
              - untagged
            vlan:
              type: int
              convert_types:
              - str
              min: 1
              max: 4094
        l2_protocol:
          type: dict
          keys:
            encapsulation_dot1q_vlan:
              type: int
              convert_types:
              - str
              description: Vlan tag to configure on sub-interface.
            forwarding_profile:
              type: str
              description: L2 protocol forwarding profile.
        mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
        mlag:
          type: int
          convert_types:
          - str
          description: MLAG ID.
          min: 1
          max: 2000
        trunk_groups:
          type: list
          items:
            type: str
        lacp_fallback_timeout:
          type: int
          description: Timeout in seconds.
          convert_types:
          - str
          default: 90
          min: 0
          max: 300
        lacp_fallback_mode:
          type: str
          valid_values:
          - individual
          - static
        qos:
          type: dict
          keys:
            trust:
              type: str
              valid_values:
              - dscp
              - cos
              - disabled
            dscp:
              type: int
              convert_types:
              - str
              description: DSCP value.
            cos:
              type: int
              convert_types:
              - str
              description: COS value.
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              description: Interval in milliseconds.
              convert_types:
              - str
            min_rx:
              type: int
              description: Rate in milliseconds.
              convert_types:
              - str
            multiplier:
              type: int
              convert_types:
              - str
              min: 3
              max: 50
            neighbor:
              type: str
              description: IPv4 or IPv6 address. When the Port-channel is a L2 interface,
                a local L3 BFD address (router_bfd.local_address) has to be defined
                globally on the switch.
            per_link:
              type: dict
              keys:
                enabled:
                  type: bool
                rfc_7130:
                  type: bool
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Policy Based Routing Policy-map name.
            qos:
              type: dict
              keys:
                input:
                  type: str
                  required: true
                  description: Quality of Service Policy-map name.
        mpls:
          type: dict
          keys:
            ip:
              type: bool
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
                igp_sync:
                  type: bool
        trunk_private_vlan_secondary:
          type: bool
        pvlan_mapping:
          type: str
          description: List of vlans as string.
          convert_types:
          - int
        vlan_translations:
          type: list
          items:
            type: dict
            keys:
              from:
                type: str
                convert_types:
                - int
                description: List of vlans as string (only one vlan if direction is
                  "both").
              to:
                type: int
                convert_types:
                - str
                description: VLAN ID.
              direction:
                type: str
                valid_values:
                - in
                - out
                - both
                default: both
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Rate in kbps, pps or percent.

                Supported options are platform dependent.

                Examples:

                - "5000 kbps"

                - "1000 pps"

                - "20 percent"

                '
        storm_control:
          type: dict
          keys:
            all:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            broadcast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            multicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
            unknown_unicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level.
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependent.
        ip_proxy_arp:
          type: bool
        isis_enable:
          type: str
          description: ISIS instance.
        isis_bfd:
          type: bool
          description: Enable BFD for ISIS.
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        isis_circuit_type:
          type: str
          valid_values:
          - level-1-2
          - level-1
          - level-2
        isis_hello_padding:
          type: bool
        isis_authentication_mode:
          type: str
          valid_values:
          - text
          - md5
        isis_authentication_key:
          type: str
          description: Type-7 encrypted password.
        traffic_policy:
          type: dict
          keys:
            input:
              type: str
              description: Ingress traffic policy.
            output:
              type: str
              description: Egress traffic policy.
        evpn_ethernet_segment:
          type: dict
          keys:
            identifier:
              type: str
              description: EVPN Ethernet Segment Identifier (Type 1 format).
            redundancy:
              type: str
              valid_values:
              - all-active
              - single-active
            designated_forwarder_election:
              type: dict
              keys:
                algorithm:
                  type: str
                  valid_values:
                  - modulus
                  - preference
                preference_value:
                  type: int
                  min: 0
                  max: 65535
                  convert_types:
                  - str
                  description: Preference_value is only used when "algorithm" is "preference".
                dont_preempt:
                  type: bool
                  description: Dont_preempt is only used when "algorithm" is "preference".
                  default: false
                hold_time:
                  type: int
                  convert_types:
                  - str
                subsequent_hold_time:
                  type: int
                  convert_types:
                  - str
                candidate_reachability_required:
                  type: bool
            mpls:
              type: dict
              keys:
                shared_index:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 1024
                tunnel_flood_filter_time:
                  type: int
                  convert_types:
                  - str
            route_target:
              type: str
              description: EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.
        esi:
          type: str
          description: 'EVPN Ethernet Segment Identifier (Type 1 format).

            If both "esi" and "evpn_ethernet_segment.identifier" are defined, the
            new variable takes precedence.

            '
          deprecation:
            warning: true
            new_key: evpn_ethernet_segment.identifier
            remove_in_version: 5.0.0
        rt:
          type: str
          description: 'EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx.

            If both "rt" and "evpn_ethernet_segment.route_target" are defined, the
            new variable takes precedence.

            '
          deprecation:
            warning: true
            new_key: evpn_ethernet_segment.route_target
            remove_in_version: 5.0.0
        lacp_id:
          type: str
          description: LACP ID with format xxxx.xxxx.xxxx.
        spanning_tree_bpdufilter:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_bpduguard:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_guard:
          type: str
          valid_values:
          - loop
          - root
          - disabled
        spanning_tree_portfast:
          type: str
          valid_values:
          - edge
          - network
        vmtracer:
          type: bool
        ptp:
          type: dict
          keys:
            enable:
              type: bool
            announce:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                timeout:
                  type: int
                  convert_types:
                  - str
            delay_req:
              type: int
              convert_types:
              - str
            delay_mechanism:
              type: str
              valid_values:
              - e2e
              - p2p
            sync_message:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
            role:
              type: str
              valid_values:
              - master
              - dynamic
            vlan:
              type: str
              convert_types:
              - int
              description: VLAN can be 'all' or list of vlans as string.
            transport:
              type: str
              valid_values:
              - ipv4
              - ipv6
              - layer2
            mpass:
              type: bool
              description: 'When MPASS is enabled on an MLAG port-channel, MLAG peers
                coordinate to function as a single PTP logical device.

                Arista PTP enabled devices always place PTP messages on the same physical
                link within the port-channel.

                Hence, MPASS is needed only on MLAG port-channels connected to non-Arista
                devices.'
        ip_address:
          type: str
          description: IPv4 address/mask.
        ip_verify_unicast_source_reachable_via:
          type: str
          valid_values:
          - any
          - rx
        ip_nat:
          type: dict
          $ref: eos_cli_config_gen#/$defs/interface_ip_nat
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6 address/mask.
        ipv6_address_link_local:
          type: str
          description: Link local IPv6 address/mask.
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_prefixes:
          type: list
          primary_key: ipv6_prefix
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
              valid_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds.
              preferred_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds.
              no_autoconfig_flag:
                type: bool
        access_group_in:
          type: str
          description: Access list name.
        access_group_out:
          type: str
          description: Access list name.
        ipv6_access_group_in:
          type: str
          description: IPv6 access list name.
        ipv6_access_group_out:
          type: str
          description: IPv6 access list name.
        mac_access_group_in:
          type: str
          description: MAC access list name.
        mac_access_group_out:
          type: str
          description: MAC access list name.
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                border_router:
                  type: bool
                  description: Configure PIM border router. EOS default is false.
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
                bfd:
                  type: bool
                  description: Set the default for whether Bidirectional Forwarding
                    Detection is enabled for PIM.
                bidirectional:
                  type: bool
                hello:
                  type: dict
                  keys:
                    count:
                      type: str
                      convert_types:
                      - int
                      - float
                      description: Number of missed hellos after which the neighbor
                        expires. Range <1.5-65535>.
                    interval:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 65535
                      description: PIM hello interval in seconds.
        service_profile:
          type: str
          description: QOS profile.
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password.
        ospf_message_digest_keys:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password.
        flow_tracker:
          type: dict
          keys:
            sampled:
              type: str
              description: Sampled flow tracker name.
            hardware:
              type: str
              description: Hardware flow tracker name.
        bgp:
          type: dict
          keys:
            session_tracker:
              type: str
              description: Name of session tracker.
        ip_igmp_host_proxy:
          type: dict
          keys:
            enabled:
              type: bool
            groups:
              type: list
              primary_key: group
              items:
                type: dict
                keys:
                  group:
                    type: str
                    description: Multicast Address.
                  exclude:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
                  include:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
            report_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 31744
              description: Time interval between unsolicited reports.
            access_lists:
              type: list
              primary_key: name
              description: Non-standard Access List name.
              items:
                type: dict
                keys:
                  name:
                    type: str
            version:
              type: int
              convert_types:
              - str
              min: 1
              max: 3
              description: IGMP version on IGMP host-proxy interface.
        peer:
          type: str
          description: Key only used for documentation or validation purposes.
        peer_interface:
          type: str
          description: Key only used for documentation or validation purposes.
        peer_type:
          type: str
          description: Key only used for documentation or validation purposes.
        sflow:
          type: dict
          keys:
            enable:
              type: bool
            egress:
              type: dict
              keys:
                enable:
                  type: bool
                unmodified_enable:
                  type: bool
        validate_state:
          type: bool
          description: Set to false to disable interface validation by the `eos_validate_state`
            role.
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the port-channel interface
            in the final EOS configuration.
  prefix_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Prefix-list Name.
        sequence_numbers:
          type: list
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "permit 10.255.0.0/27 eq 32"

                  '
  priority_flow_control:
    type: dict
    description: 'Global Priority Flow Control settings.

      '
    keys:
      all_off:
        type: bool
        description: 'Disable PFC on all interfaces.

          '
      watchdog:
        type: dict
        keys:
          action:
            type: str
            valid_values:
            - drop
            - no-drop
            description: 'Action on stuck queue.

              '
          timeout:
            type: str
            pattern: ^\d+(\.\d{1,2})?$
            convert_types:
            - int
            - float
            description: 'Timeout in seconds after which port should be errdisabled
              or

              should start dropping on congested priorities.

              This should be decimal with up to 2 decimal point.

              Example: 0.01 or 60

              '
          polling_interval:
            type: str
            pattern: ^\d+(\.\d{1,3})?$
            convert_types:
            - int
            - float
            description: 'Time interval in seconds at which the watchdog should poll
              the queues.

              This should be decimal with up to 3 decimal point.

              Example: 0.005 or 60

              '
          recovery_time:
            type: str
            pattern: ^\d+(\.\d{1,2})?$
            convert_types:
            - int
            - float
            description: 'Recovery-time in seconds after which stuck queue should

              recover and start forwarding again.

              This should be decimal with up to 2 decimal point.

              Example: 0.01 or 60

              '
          override_action_drop:
            type: bool
            description: 'Override configured action on stuck queue to drop.

              '
  prompt:
    type: str
  ptp:
    type: dict
    keys:
      mode:
        type: str
        valid_values:
        - boundary
        - disabled
        - e2etransparent
        - gptp
        - ordinarymaster
        - p2ptransparent
      mode_one_step:
        type: bool
      forward_unicast:
        type: bool
      clock_identity:
        type: str
        description: The clock-id in xx:xx:xx:xx:xx:xx format.
      source:
        type: dict
        keys:
          ip:
            description: Source IP.
            type: str
      priority1:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      priority2:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      ttl:
        type: int
        min: 1
        max: 255
        convert_types:
        - str
      domain:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      message_type:
        type: dict
        keys:
          general:
            type: dict
            keys:
              dscp:
                type: int
                convert_types:
                - str
          event:
            type: dict
            keys:
              dscp:
                type: int
                convert_types:
                - str
      monitor:
        type: dict
        keys:
          enabled:
            type: bool
            default: true
          threshold:
            type: dict
            keys:
              offset_from_master:
                type: int
                min: 0
                max: 1000000000
                convert_types:
                - str
              mean_path_delay:
                type: int
                min: 0
                max: 1000000000
                convert_types:
                - str
              drop:
                type: dict
                keys:
                  offset_from_master:
                    type: int
                    min: 0
                    max: 1000000000
                    convert_types:
                    - str
                  mean_path_delay:
                    type: int
                    min: 0
                    max: 1000000000
                    convert_types:
                    - str
          missing_message:
            type: dict
            keys:
              intervals:
                type: dict
                keys:
                  announce:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  follow_up:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  sync:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
              sequence_ids:
                type: dict
                keys:
                  enabled:
                    type: bool
                  announce:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  delay_resp:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  follow_up:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  sync:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
  qos:
    type: dict
    keys:
      map:
        type: dict
        keys:
          cos:
            type: list
            items:
              type: str
              description: 'Example: "0 1 to traffic-class 1"

                '
          dscp:
            type: list
            items:
              type: str
              description: 'Example: "8 9 10 to traffic-class 1"

                '
          exp:
            type: list
            items:
              type: str
              description: 'Example "0 to traffic-class 0"

                '
          traffic_class:
            type: list
            items:
              type: str
              description: 'Example: "1 to dscp 32"

                '
      rewrite_dscp:
        type: bool
      random_detect:
        type: dict
        description: Global random-detect settings.
        keys:
          ecn:
            type: dict
            description: Global ECN Configuration.
            keys:
              allow_non_ect:
                type: dict
                keys:
                  enabled:
                    type: bool
                    description: 'Allow non-ect and set drop-precedence 1 in a policy
                      map simultaneously.

                      Check which command is required for your platform.'
                  chip_based:
                    type: bool
                    description: Allow non-ect chip-based.
  qos_profiles:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Profile-Name.
        trust:
          type: str
          valid_values:
          - cos
          - dscp
          - disabled
        cos:
          type: int
          convert_types:
          - str
        dscp:
          type: int
          convert_types:
          - str
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Supported options are platform dependent.

                Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                '
        service_policy:
          type: dict
          keys:
            type:
              type: dict
              keys:
                qos_input:
                  type: str
                  description: Policy-map name.
        tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: TX-Queue ID.
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent.

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                      '
              comment:
                type: str
                description: Text comment added to queue.
              random_detect:
                type: dict
                keys:
                  ecn:
                    description: Explicit Congestion Notification.
                    type: dict
                    keys:
                      count:
                        type: bool
                        description: Enable counter for random-detect ECNs.
                      threshold:
                        type: dict
                        keys:
                          units:
                            required: true
                            type: str
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - milliseconds
                            description: 'Units to be used for the threshold values.

                              This should be one of segments, byte, kbytes, mbytes.'
                          min:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: Random-detect ECN minimum-threshold.
                          max:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: Random-detect ECN maximum-threshold.
                          max_probability:
                            type: int
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: Random-detect ECN maximum mark probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: Random-detect ECN weight.
                  drop:
                    description: Set WRED parameters.
                    type: dict
                    keys:
                      threshold:
                        type: dict
                        keys:
                          units:
                            required: true
                            type: str
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - microseconds
                            - milliseconds
                            description: Units to be used for the threshold values.
                          drop_precedence:
                            type: int
                            required: false
                            min: 0
                            max: 2
                            description: Specify Drop Precedence value.
                          min:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: WRED minimum-threshold.
                          max:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: WRED maximum-threshold.
                          drop_probability:
                            type: int
                            required: true
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: WRED drop probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: WRED weight.
        uc_tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: UC TX queue ID.
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent.

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                      '
              comment:
                type: str
                description: Text comment added to queue.
              random_detect:
                type: dict
                keys:
                  ecn:
                    description: Explicit Congestion Notification.
                    type: dict
                    keys:
                      count:
                        type: bool
                        description: Enable counter for random-detect ECNs.
                      threshold:
                        type: dict
                        keys:
                          units:
                            required: true
                            type: str
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - milliseconds
                            description: Unit to be used for the threshold values.
                          min:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: Random-detect ECN minimum-threshold.
                          max:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: Random-detect ECN maximum-threshold.
                          max_probability:
                            type: int
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: Random-detect ECN maximum mark probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: Random-detect ECN weight.
                  drop:
                    description: Set WRED parameters.
                    type: dict
                    keys:
                      threshold:
                        type: dict
                        keys:
                          units:
                            required: true
                            type: str
                            valid_values:
                            - segments
                            - bytes
                            - kbytes
                            - mbytes
                            - microseconds
                            - milliseconds
                            description: Units to be used for the threshold values.
                          drop_precedence:
                            type: int
                            required: false
                            min: 0
                            max: 2
                            description: Specify Drop Precedence value.
                          min:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: WRED minimum-threshold.
                          max:
                            type: int
                            required: true
                            min: 1
                            convert_types:
                            - str
                            description: WRED maximum-threshold.
                          drop_probability:
                            type: int
                            required: true
                            min: 1
                            max: 100
                            convert_types:
                            - str
                            description: WRED drop probability.
                          weight:
                            type: int
                            min: 0
                            max: 15
                            convert_types:
                            - str
                            description: WRED weight.
        mc_tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: MC TX queue ID.
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent.

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                      '
              comment:
                type: str
                description: 'Text comment added to queue.

                  '
        priority_flow_control:
          type: dict
          description: 'Priority Flow Control settings.

            '
          keys:
            enabled:
              type: bool
              description: 'Enable Priority Flow control.

                '
            watchdog:
              type: dict
              description: 'Watchdog can detect stuck transmit queues.

                '
              keys:
                enabled:
                  type: bool
                  required: true
                  description: 'Enable the watchdog on stuck transmit queues.

                    '
                action:
                  type: str
                  valid_values:
                  - drop
                  - notify-only
                  description: 'Override the default error-disable action to either
                    drop

                    traffic on the stuck queue or notify-only

                    without making any actions on the stuck queue.

                    '
                timer:
                  type: dict
                  description: 'Timer thresholds whilst monitoring queues.

                    '
                  keys:
                    timeout:
                      type: str
                      required: true
                      pattern: ^\d+(\.\d{1,2})?$
                      convert_types:
                      - int
                      - float
                      description: 'Timeout in seconds after which port should be
                        errdisabled or

                        should start dropping on congested priorities.

                        This should be decimal with up to 2 decimal point.

                        Example: 0.01 or 60

                        '
                    polling_interval:
                      type: str
                      required: true
                      pattern: ^auto|\d+(\.\d{1,3})?$
                      convert_types:
                      - int
                      - float
                      description: 'Time interval in seconds at which the watchdog
                        should poll the queues.

                        This should be decimal with up to 3 decimal point or set

                        to ''auto'' based on recovery_time and timeout values.

                        Example: 0.005 or 60

                        '
                    recovery_time:
                      type: str
                      required: true
                      pattern: ^\d+(\.\d{1,2})?$
                      convert_types:
                      - int
                      - float
                      description: 'Recovery-time in seconds after which stuck queue
                        should

                        recover and start forwarding again.

                        This should be decimal with up to 2 decimal point.

                        Example: 0.01 or 60

                        '
                    forced:
                      type: bool
                      description: 'Force recover any stuck queue(s) after the duration,

                        irrespective of whether PFC frames are being

                        received or not.

                        '
            priorities:
              type: list
              primary_key: priority
              description: 'Set the drop/no_drop on each queue.

                '
              items:
                type: dict
                keys:
                  priority:
                    type: int
                    min: 0
                    max: 7
                    required: true
                    convert_types:
                    - str
                    description: 'Priority queue number (COS value).

                      '
                  no_drop:
                    type: bool
                    required: true
                    description: 'Enable Priority Flow Control frames on this queue.

                      '
  queue_monitor_length:
    type: dict
    keys:
      enabled:
        type: bool
        required: true
      default_thresholds:
        type: dict
        keys:
          high:
            type: int
            required: true
            convert_types:
            - str
            description: 'Default high threshold for Ethernet Interfaces.

              '
          low:
            type: int
            convert_types:
            - str
            description: 'Default low threshold for Ethernet Interfaces.

              Low threshold support is platform dependent.

              '
      log:
        type: int
        convert_types:
        - str
        description: Logging interval in seconds.
      notifying:
        type: bool
        description: Should only be used for platforms supporting the "queue-monitor
          length notifying" CLI.
      cpu:
        type: dict
        keys:
          thresholds:
            type: dict
            keys:
              high:
                type: int
                required: true
                convert_types:
                - str
              low:
                type: int
                convert_types:
                - str
      tx_latency:
        type: bool
        description: Enable tx-latency mode.
  queue_monitor_streaming:
    type: dict
    keys:
      enable:
        type: bool
      ip_access_group:
        type: str
        description: Name of IP ACL.
      ipv6_access_group:
        type: str
        description: Name of IPv6 ACL.
      max_connections:
        type: int
        convert_types:
        - str
        min: 1
        max: 100
      vrf:
        type: str
        convert_types:
        - int
  radius_server:
    type: dict
    keys:
      attribute_32_include_in_access_req:
        type: dict
        keys:
          hostname:
            type: bool
          format:
            type: str
            description: Specify the format of the NAS-Identifier. If 'hostname' is
              set, this is ignored.
      dynamic_authorization:
        type: dict
        keys:
          port:
            type: int
            min: 0
            max: 65535
            convert_types:
            - str
            description: TCP Port.
          tls_ssl_profile:
            type: str
            description: Name of TLS profile.
      hosts:
        type: list
        primary_key: host
        items:
          type: dict
          keys:
            host:
              type: str
              description: Host IP address or name.
            vrf:
              type: str
              convert_types:
              - int
            timeout:
              type: int
              min: 1
              max: 1000
              convert_types:
              - str
            retransmit:
              type: int
              min: 0
              max: 100
              convert_types:
              - str
            key:
              type: str
              description: Encrypted key.
  radius_servers:
    deprecation:
      warning: true
      new_key: radius_server.hosts
      remove_in_version: v5.0.0
    type: list
    items:
      type: dict
      keys:
        host:
          type: str
          description: Host IP address or name.
        vrf:
          type: str
          convert_types:
          - int
        key:
          type: str
          description: Encrypted key.
  redundancy:
    type: dict
    keys:
      protocol:
        type: str
        description: Redundancy Protocol.
  roles:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Role name.
        sequence_numbers:
          type: list
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
                description: Sequence number.
              action:
                type: str
                valid_values:
                - permit
                - deny
              mode:
                type: str
                description: '"config", "config-all", "exec" or mode key as string.

                  '
              command:
                type: str
                description: Command as string.
  route_maps:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Route-map Name.
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              description:
                type: str
              match:
                type: list
                description: List of "match" statements.
                items:
                  type: str
                  description: 'Match as string.

                    Example: "ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY"

                    '
              set:
                type: list
                description: List of "set" statements.
                items:
                  type: str
                  description: 'Set as string.

                    Example: "origin incomplete"

                    '
              sub_route_map:
                type: str
                description: Name of Sub-Route-map.
              continue:
                type: dict
                keys:
                  enabled:
                    type: bool
                  sequence_number:
                    type: int
                    convert_types:
                    - str
  router_adaptive_virtual_topology:
    type: dict
    keys:
      topology_role:
        description: Role name.
        type: str
        valid_values:
        - edge
        - pathfinder
        - transit region
        - transit zone
      region:
        type: dict
        description: Region name and ID.
        keys:
          name:
            type: str
            required: true
          id:
            type: int
            convert_types:
            - str
            required: true
            min: 1
            max: 255
      zone:
        type: dict
        description: Zone name and ID.
        keys:
          name:
            type: str
            required: true
          id:
            type: int
            convert_types:
            - str
            required: true
            min: 1
            max: 10000
      site:
        type: dict
        description: Site name and ID.
        keys:
          name:
            type: str
            required: true
          id:
            type: int
            convert_types:
            - str
            required: true
            min: 1
            max: 10000
      profiles:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: AVT Name.
            load_balance_policy:
              type: str
              description: Name of the load-balance policy.
            internet_exit_policy:
              type: str
              description: Name of the internet exit policy.
      policies:
        type: list
        primary_key: name
        description: 'A sequence of application profiles mapped to some virtual topologies.


          When `wan_mode` is set to `autovpn`, the rules are indexed using 10*<index>
          in the list.'
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy name.
            matches:
              type: list
              items:
                type: dict
                keys:
                  application_profile:
                    type: str
                    description: Application profile name.
                  avt_profile:
                    type: str
                    description: AVT Profile name.
                  dscp:
                    type: int
                    convert_types:
                    - str
                    min: 0
                    max: 63
                    description: Set DSCP for matched traffic.
                  traffic_class:
                    type: int
                    convert_types:
                    - str
                    min: 0
                    max: 7
                    description: Set traffic-class for matched traffic.
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
            policy:
              type: str
              description: AVT Policy name.
            profiles:
              type: list
              primary_key: id
              description: AVT profiles in this VRF.
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: AVT profile name.
                  id:
                    type: int
                    description: Unique ID for this AVT (per VRF).
                    required: true
                    convert_types:
                    - str
                    min: 1
                    max: 254
  router_bfd:
    type: dict
    keys:
      interval:
        type: int
        description: Rate in milliseconds.
      local_address:
        type: str
        description: Configure BFD local IP/IPv6 address.
      min_rx:
        type: int
        description: Rate in milliseconds.
      multiplier:
        type: int
        min: 3
        max: 50
      multihop:
        type: dict
        keys:
          interval:
            type: int
            description: Rate in milliseconds.
          min_rx:
            type: int
            description: Rate in milliseconds.
          multiplier:
            type: int
            min: 3
            max: 50
      session_snapshot_interval:
        type: int
        convert_types:
        - str
        min: 1
        max: 3600
        description: 'Interval in seconds.

          Intervals below 10 are considered "dangerous" on EOS and must have `session_snapshot_interval_dangerous`
          set to `true`.'
      session_snapshot_interval_dangerous:
        type: bool
      sbfd:
        type: dict
        keys:
          local_interface:
            type: dict
            keys:
              name:
                type: str
                description: Interface Name.
              protocols:
                type: dict
                keys:
                  ipv4:
                    type: bool
                  ipv6:
                    type: bool
          initiator_interval:
            type: int
            description: Rate in milliseconds.
          initiator_multiplier:
            type: int
            min: 3
            max: 50
          initiator_measurement_round_trip:
            type: bool
            description: Enable round-trip delay measurement.
          reflector:
            type: dict
            keys:
              min_rx:
                type: int
                description: Rate in milliseconds.
              local_discriminator:
                type: str
                description: IPv4 address or 32 bit integer.
  router_bgp:
    type: dict
    keys:
      as:
        type: str
        description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

          For asdot notation in YAML inputs, the value must be put in quotes, to prevent
          it from being interpreted as a float number.'
        convert_types:
        - int
      as_notation:
        display_name: ASN Notation
        type: str
        description: BGP AS can be deplayed in the asplain <1-4294967295> or asdot
          notation "<1-65535>.<0-65535>". This flag indicates which mode is preferred
          - asplain is the default.
        valid_values:
        - asdot
        - asplain
      router_id:
        type: str
        description: In IP address format A.B.C.D.
      distance:
        type: dict
        keys:
          external_routes:
            type: int
            required: true
            convert_types:
            - str
            min: 1
            max: 255
          internal_routes:
            type: int
            required: true
            convert_types:
            - str
            min: 1
            max: 255
          local_routes:
            type: int
            required: true
            convert_types:
            - str
            min: 1
            max: 255
      graceful_restart:
        type: dict
        keys:
          enabled:
            type: bool
          restart_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 3600
            description: Number of seconds.
          stalepath_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 3600
            description: Number of seconds.
      graceful_restart_helper:
        type: dict
        keys:
          enabled:
            type: bool
          restart_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 100000000
            description: 'Number of seconds

              graceful-restart-help long-lived and restart-time are mutually exclusive
              in CLI.

              restart-time will take precedence if both are configured.

              '
          long_lived:
            type: bool
            description: 'graceful-restart-help long-lived and restart-time are mutually
              exclusive in CLI.

              restart-time will take precedence if both are configured.

              '
      maximum_paths:
        type: dict
        keys:
          paths:
            type: int
            required: true
            convert_types:
            - str
            min: 1
            max: 600
          ecmp:
            type: int
            convert_types:
            - str
            min: 1
            max: 600
      updates:
        type: dict
        keys:
          wait_for_convergence:
            type: bool
            description: 'Disables FIB updates and route advertisement when the BGP
              instance is initiated until the BGP convergence state is reached.

              '
          wait_install:
            type: bool
            description: 'Do not advertise reachability to a prefix until that prefix
              has been installed in hardware.

              This will eliminate any temporary black holes due to a BGP speaker advertising
              reachability to a prefix that may not yet be installed into the forwarding
              plane.

              '
      bgp_cluster_id:
        type: str
        description: IP Address A.B.C.D.
      bgp_defaults:
        type: list
        description: BGP command as string.
        items:
          type: str
      bgp:
        type: dict
        keys:
          default:
            type: dict
            keys:
              ipv4_unicast:
                type: bool
                description: Default activation of IPv4 unicast address-family on
                  all IPv4 neighbors (EOS default = True).
              ipv4_unicast_transport_ipv6:
                type: bool
                description: Default activation of IPv4 unicast address-family on
                  all IPv6 neighbors (EOS default == False).
          route_reflector_preserve_attributes:
            type: dict
            keys:
              enabled:
                type: bool
              always:
                type: bool
          bestpath:
            type: dict
            keys:
              d_path:
                type: bool
      listen_ranges:
        type: list
        description: 'Improved "listen_ranges" data model to support multiple listen
          ranges and additional filter capabilities.

          '
        items:
          type: dict
          keys:
            prefix:
              type: str
              description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
            peer_id_include_router_id:
              type: bool
              description: Include router ID as part of peer filter.
            peer_group:
              type: str
              description: Peer group name.
            peer_filter:
              type: str
              description: 'Peer-filter name.

                note: `peer_filter` or `remote_as` is required but mutually exclusive.

                If both are defined, `peer_filter` takes precedence

                '
            remote_as:
              type: str
              convert_types:
              - int
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
      peer_groups:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Peer-group name.
            type:
              type: str
              description: Key only used for documentation or validation purposes.
            remote_as:
              type: str
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
              convert_types:
              - int
            local_as:
              type: str
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
              convert_types:
              - int
            description:
              type: str
            shutdown:
              type: bool
            as_path:
              type: dict
              description: BGP AS-PATH options.
              keys:
                remote_as_replace_out:
                  type: bool
                  description: Replace AS number with local AS number.
                prepend_own_disabled:
                  type: bool
                  description: Disable prepending own AS number to AS path.
            remove_private_as:
              type: dict
              description: Remove private AS numbers in outbound AS path.
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
                replace_as:
                  type: bool
            remove_private_as_ingress:
              type: dict
              keys:
                enabled:
                  type: bool
                replace_as:
                  type: bool
            peer_filter:
              type: str
              description: 'Peer-filter name.

                note: `bgp_listen_range_prefix` and `peer_filter` should not be mixed
                with

                the new `listen_ranges` key above to avoid conflicts.

                '
              deprecation:
                warning: true
                remove_in_version: 5.0.0
                new_key: listen_ranges
            next_hop_unchanged:
              type: bool
            update_source:
              type: str
              description: IP address or interface name.
            route_reflector_client:
              type: bool
            bfd:
              type: bool
              description: Enable BFD.
            bfd_timers:
              type: dict
              description: 'Override default BFD timers. BFD must be enabled with
                `bfd: true`.'
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                  min: 50
                  max: 60000
                  required: true
                  description: Interval in milliseconds.
                min_rx:
                  type: int
                  convert_types:
                  - str
                  min: 50
                  max: 60000
                  required: true
                  description: Rate in milliseconds.
                multiplier:
                  type: int
                  min: 3
                  max: 50
                  required: true
                  convert_types:
                  - str
            ebgp_multihop:
              type: int
              min: 1
              max: 255
              description: Time-to-live in range of hops.
              convert_types:
              - str
            next_hop_self:
              type: bool
            password:
              type: str
            passive:
              type: bool
            default_originate:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                route_map:
                  type: str
                  description: Route-map name.
            send_community:
              type: str
              description: '''all'' or a combination of ''standard'', ''extended'',
                ''large'' and ''link-bandwidth (w/options)''.'
            maximum_routes:
              type: int
              description: Maximum number of routes (0 means unlimited).
              min: 0
              max: 4294967294
              convert_types:
              - str
            maximum_routes_warning_limit:
              type: str
              description: 'Maximum number of routes after which a warning is issued
                (0 means never warn) or

                Percentage of maximum number of routes at which to warn ("<1-100>
                percent").

                '
              convert_types:
              - int
            maximum_routes_warning_only:
              type: bool
            link_bandwidth:
              type: dict
              keys:
                enabled:
                  type: bool
                default:
                  type: str
                  description: nn.nn(K|M|G) link speed in bits/second.
            allowas_in:
              type: dict
              keys:
                enabled:
                  type: bool
                times:
                  type: int
                  description: Number of local ASNs allowed in a BGP update.
                  convert_types:
                  - str
                  min: 1
                  max: 10
            weight:
              type: int
              min: 0
              max: 65535
              convert_types:
              - str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>".
            rib_in_pre_policy_retain:
              type: dict
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
            route_map_in:
              type: str
              description: Inbound route-map name.
            route_map_out:
              type: str
              description: Outbound route-map name.
            bgp_listen_range_prefix:
              type: str
              description: 'IP prefix range.

                note: `bgp_listen_range_prefix` and `peer_filter` should not be mixed
                with

                the new `listen_ranges` key above to avoid conflicts.

                '
              deprecation:
                warning: true
                remove_in_version: 5.0.0
                new_key: listen_ranges
            session_tracker:
              type: str
            ttl_maximum_hops:
              type: int
              convert_types:
              - str
              min: 0
              max: 254
              description: Maximum number of hops.
      neighbors:
        type: list
        primary_key: ip_address
        convert_types:
        - dict
        items:
          type: dict
          keys:
            ip_address:
              type: str
            peer_group:
              type: str
            remote_as:
              type: str
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
              convert_types:
              - int
            local_as:
              type: str
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
              convert_types:
              - int
            as_path:
              type: dict
              description: BGP AS-PATH options.
              keys:
                remote_as_replace_out:
                  type: bool
                  description: Replace AS number with local AS number.
                prepend_own_disabled:
                  type: bool
                  description: Disable prepending own AS number to AS path.
            peer:
              type: str
              description: Key only used for documentation or validation purposes.
            description:
              type: str
            route_reflector_client:
              type: bool
            password:
              type: str
            passive:
              type: bool
            shutdown:
              type: bool
            update_source:
              type: str
              description: Source Interface.
            bfd:
              type: bool
              description: Enable BFD.
            bfd_timers:
              type: dict
              description: 'Override default BFD timers. BFD must be enabled with
                `bfd: true`.'
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                  min: 50
                  max: 60000
                  required: true
                  description: Interval in milliseconds.
                min_rx:
                  type: int
                  convert_types:
                  - str
                  min: 50
                  max: 60000
                  required: true
                  description: Rate in milliseconds.
                multiplier:
                  type: int
                  min: 3
                  max: 50
                  required: true
                  convert_types:
                  - str
            weight:
              type: int
              min: 0
              max: 65535
              convert_types:
              - str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>".
            route_map_in:
              type: str
              description: Inbound route-map name.
            route_map_out:
              type: str
              description: Outbound route-map name.
            default_originate:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                route_map:
                  type: str
            send_community:
              type: str
              description: '''all'' or a combination of ''standard'', ''extended'',
                ''large'' and ''link-bandwidth (w/options)''.'
            maximum_routes:
              type: int
              description: Maximum number of routes (0 means unlimited).
              min: 0
              max: 4294967294
              convert_types:
              - str
            maximum_routes_warning_limit:
              type: str
              description: 'Maximum number of routes after which a warning is issued
                (0 means never warn) or

                Percentage of maximum number of routes at which to warn ("<1-100>
                percent").

                '
              convert_types:
              - int
            maximum_routes_warning_only:
              type: bool
            allowas_in:
              type: dict
              keys:
                enabled:
                  type: bool
                times:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 10
                  description: Number of local ASNs allowed in a BGP update.
            ebgp_multihop:
              type: int
              min: 1
              max: 255
              description: Time-to-live in range of hops.
              convert_types:
              - str
            next_hop_self:
              type: bool
            link_bandwidth:
              type: dict
              keys:
                enabled:
                  type: bool
                default:
                  type: str
                  description: nn.nn(K|M|G) link speed in bits/second.
            rib_in_pre_policy_retain:
              type: dict
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
            remove_private_as:
              type: dict
              description: Remove private AS numbers in outbound AS path.
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
                replace_as:
                  type: bool
            remove_private_as_ingress:
              type: dict
              keys:
                enabled:
                  type: bool
                replace_as:
                  type: bool
            session_tracker:
              type: str
            ttl_maximum_hops:
              type: int
              convert_types:
              - str
              min: 0
              max: 254
              description: Maximum number of hops.
      neighbor_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Interface name.
            remote_as:
              type: str
              convert_types:
              - int
              description: 'BGP AS <1-4294967295> or AS number in asdot notation "<1-65535>.<0-65535>".

                For asdot notation in YAML inputs, the value must be put in quotes,
                to prevent it from being interpreted as a float number.'
            peer:
              type: str
              description: Key only used for documentation or validation purposes.
            peer_group:
              type: str
              default: Peer-group name
            description:
              type: str
            peer_filter:
              type: str
              description: Peer-filter name.
      aggregate_addresses:
        type: list
        primary_key: prefix
        convert_types:
        - dict
        items:
          type: dict
          keys:
            prefix:
              type: str
              description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
            advertise_only:
              type: bool
            as_set:
              type: bool
            advertise_map:
              type: str
              description: Route-map name.
            supress_map:
              type: str
              description: Route-map name.
            summary_only:
              type: bool
            attribute_map:
              type: str
              description: Route-map name.
            match_map:
              type: str
              description: Route-map name.
      redistribute_routes:
        type: list
        primary_key: source_protocol
        convert_types:
        - dict
        - list
        items:
          type: dict
          keys:
            source_protocol:
              type: str
              valid_values:
              - attached-host
              - bgp
              - connected
              - dynamic
              - isis
              - ospf
              - ospfv3
              - rip
              - static
              - user
            route_map:
              type: str
            rcf:
              type: str
              description: 'RCF function name with parenthesis.

                Example: MyFunction(myarg).

                `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.

                Only applicable if `source_protocol` is one of `connected`, `static`,
                `isis`, `user`, `dynamic`.'
            include_leaked:
              type: bool
      vlan_aware_bundles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VLAN aware bundle name.
            tenant:
              type: str
              description: Key only used for documentation or validation purposes.
            description:
              type: str
              description: Key only used for documentation or validation purposes.
            rd:
              description: Route distinguisher.
              type: str
            rd_evpn_domain:
              type: dict
              keys:
                domain:
                  type: str
                  valid_values:
                  - remote
                  - all
                rd:
                  type: str
                  description: Route distinguisher.
            route_targets:
              type: dict
              keys:
                both:
                  type: list
                  items:
                    type: str
                import:
                  type: list
                  items:
                    type: str
                export:
                  type: list
                  items:
                    type: str
                import_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                import_export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
            redistribute_routes:
              type: list
              items:
                type: str
            no_redistribute_routes:
              type: list
              items:
                type: str
            vlan:
              type: str
              description: VLAN range as string. Example "100-200,300".
              convert_types:
              - int
            eos_cli:
              type: str
              description: Multiline EOS CLI rendered directly on the Router BGP,
                VLAN-aware-bundle definition in the final EOS configuration.
      vlans:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
            tenant:
              type: str
              description: Key only used for documentation or validation purposes.
            rd:
              description: Route distinguisher.
              type: str
            rd_evpn_domain:
              type: dict
              keys:
                domain:
                  type: str
                  valid_values:
                  - remote
                  - all
                rd:
                  type: str
                  description: Route distinguisher.
            eos_cli:
              type: str
              description: Multiline EOS CLI rendered directly on the Router BGP,
                VLAN definition in the final EOS configuration.
            route_targets:
              type: dict
              keys:
                both:
                  type: list
                  items:
                    type: str
                import:
                  type: list
                  items:
                    type: str
                export:
                  type: list
                  items:
                    type: str
                import_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                import_export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
            redistribute_routes:
              type: list
              items:
                type: str
            no_redistribute_routes:
              type: list
              items:
                type: str
      vpws:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VPWS instance name.
            rd:
              description: Route distinguisher.
              type: str
            route_targets:
              type: dict
              keys:
                import_export:
                  type: str
                  description: Route Target.
            mpls_control_word:
              type: bool
            label_flow:
              type: bool
            mtu:
              type: int
              convert_types:
              - str
            pseudowires:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Pseudowire name.
                  id_local:
                    type: int
                    convert_types:
                    - str
                    description: Must match id_remote on other pe.
                  id_remote:
                    type: int
                    convert_types:
                    - str
                    description: Must match id_local on other pe.
      address_family_evpn:
        type: dict
        keys:
          domain_identifier:
            type: str
          neighbor_default:
            type: dict
            keys:
              encapsulation:
                type: str
                valid_values:
                - vxlan
                - mpls
              next_hop_self_source_interface:
                description: Source interface name.
                type: str
              next_hop_self_received_evpn_routes:
                type: dict
                keys:
                  enable:
                    type: bool
                  inter_domain:
                    type: bool
          next_hop_mpls_resolution_ribs:
            type: list
            min_length: 1
            max_length: 3
            description: Specify the RIBs used to resolve MPLS next-hops. The order
              of this list determines the order of RIB lookups.
            items:
              type: dict
              keys:
                rib_type:
                  type: str
                  required: true
                  valid_values:
                  - system-connected
                  - tunnel-rib-colored
                  - tunnel-rib
                  description: Type of RIB. For 'tunnel-rib', use 'rib_name' to specify
                    the name of the Tunnel-RIB to use.
                rib_name:
                  type: str
                  description: The name of the tunnel-rib to use when using 'tunnel-rib'
                    type.
          neighbors:
            type: list
            primary_key: ip_address
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                domain_remote:
                  type: bool
                encapsulation:
                  type: str
                  valid_values:
                  - vxlan
                  - mpls
                additional_paths:
                  type: dict
                  keys:
                    receive:
                      type: bool
                    send:
                      type: dict
                      keys:
                        any:
                          type: bool
                        backup:
                          type: bool
                        ecmp:
                          type: bool
                        ecmp_limit:
                          type: int
                          description: Amount of ECMP paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
                        limit:
                          type: int
                          description: Amount of paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
          evpn_hostflap_detection:
            type: dict
            keys:
              enabled:
                type: bool
              window:
                type: int
                description: Time (in seconds) to detect a MAC duplication issue.
                min: 0
                max: 4294967295
                convert_types:
                - str
              threshold:
                type: int
                min: 0
                max: 4294967295
                convert_types:
                - str
                description: Minimum number of MAC moves that indicate a MAC Duplication
                  issue.
              expiry_timeout:
                type: int
                min: 0
                max: 4294967295
                convert_types:
                - str
                description: Time (in seconds) to purge a MAC duplication issue.
          next_hop:
            type: dict
            keys:
              resolution_disabled:
                type: bool
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
              import_ethernet_segment_ip_mass_withdraw:
                type: bool
              import_overlay_index_gateway:
                type: bool
              export_ethernet_segment_ip_mass_withdraw:
                type: bool
          next_hop_unchanged:
            type: bool
          bgp_additional_paths:
            type: dict
            description: BGP additional-paths commands.
            keys:
              receive:
                type: bool
                description: Receive multiple paths.
              send:
                type: dict
                description: Send multiple paths.
                keys:
                  any:
                    type: bool
                    description: Any eligible path.
                  backup:
                    type: bool
                    description: Best path and installed backup path.
                  ecmp:
                    type: bool
                    description: All paths in best path ECMP group.
                  ecmp_limit:
                    type: int
                    description: Amount of ECMP paths to send.
                    convert_types:
                    - str
                    min: 2
                    max: 64
                  limit:
                    type: int
                    description: Amount of paths to send.
                    convert_types:
                    - str
                    min: 2
                    max: 64
      address_family_rtc:
        type: dict
        keys:
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                default_route_target:
                  type: dict
                  keys:
                    only:
                      type: bool
                    encoding_origin_as_omit:
                      type: str
      address_family_ipv4:
        type: dict
        keys:
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                  type: str
                route_map:
                  description: Route-map name.
                  type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                default_originate:
                  type: dict
                  keys:
                    always:
                      type: bool
                    route_map:
                      description: Route-map name.
                      type: str
                next_hop:
                  type: dict
                  keys:
                    address_family_ipv6:
                      type: dict
                      keys:
                        enabled:
                          type: bool
                          required: true
                        originate:
                          type: bool
                    address_family_ipv6_originate:
                      type: bool
                      deprecation:
                        warning: true
                        removed: false
                        new_key: address_family_ipv6
                        remove_in_version: 5.0.0
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name.
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name.
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name.
                prefix_list_out:
                  type: str
                  description: Prefix-list name.
                default_originate:
                  type: dict
                  keys:
                    always:
                      type: bool
                    route_map:
                      type: str
          redistribute_routes:
            type: list
            primary_key: source_protocol
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                  valid_values:
                  - attached-host
                  - bgp
                  - connected
                  - dynamic
                  - isis
                  - ospf
                  - ospfv3
                  - rip
                  - static
                  - user
                route_map:
                  type: str
                include_leaked:
                  type: bool
                  description: Only applicable if `source_protocol` is one of `connected`,
                    `static`, `isis`, `ospf`, `ospfv3`.
                rcf:
                  type: str
                  description: 'RCF function name with parenthesis.

                    Example: MyFunction(myarg).

                    `route_map` and `rcf` are mutually exclusive. `route_map` takes
                    precedence.

                    Only applicable if `source_protocol` is one of `connected`, `static`,
                    `isis`, `user`, `dynamic`.'
      address_family_ipv4_multicast:
        type: dict
        keys:
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
          redistribute_routes:
            type: list
            primary_key: source_protocol
            convert_types:
            - dict
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                route_map:
                  type: str
                include_leaked:
                  type: bool
                  description: Only applicable if `source_protocol` is `isis`.
                rcf:
                  type: str
                  description: 'RCF function name with parenthesis.

                    Example: MyFunction(myarg).

                    `route_map` and `rcf` are mutually exclusive. `route_map` takes
                    precedence.

                    Only applicable if `source_protocol` is `isis`.'
      address_family_ipv4_sr_te:
        type: dict
        keys:
          neighbors:
            type: list
            primary_key: ip_address
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
          peer_groups:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
      address_family_ipv6:
        type: dict
        keys:
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                  type: str
                route_map:
                  description: Route-map name.
                  type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name.
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name.
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name.
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name.
          redistribute_routes:
            type: list
            primary_key: source_protocol
            convert_types:
            - dict
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                route_map:
                  type: str
                include_leaked:
                  type: bool
                rcf:
                  type: str
                  description: 'RCF function name with parenthesis.

                    Example: MyFunction(myarg).

                    `route_map` and `rcf` are mutually exclusive. `route_map` takes
                    precedence.

                    Only used if `source_protocol` is one of `connected`, `static`,
                    `isis`, `user`, `dynamic`.'
      address_family_ipv6_multicast:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
              additional_paths:
                type: dict
                keys:
                  receive:
                    type: bool
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  type: str
                  description: IPv6 prefix "A:B:C:D:E:F:G:H/I".
                route_map:
                  type: str
          redistribute_routes:
            type: list
            primary_key: source_protocol
            convert_types:
            - dict
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                  valid_values:
                  - connected
                  - isis
                  - ospf
                  - ospfv3
                  - static
                include_leaked:
                  type: bool
                  description: Only applicable if `source_protocol` is `isis`.
                route_map:
                  type: str
                rcf:
                  type: str
                  description: 'RCF function name with parenthesis.

                    Example: MyFunction(myarg).

                    `route_map` and `rcf` are mutually exclusive. `route_map` takes
                    precedence.

                    Only applicable if `source_protocol` is `isis`.'
      address_family_ipv6_sr_te:
        type: dict
        keys:
          neighbors:
            type: list
            primary_key: ip_address
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
          peer_groups:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
      address_family_link_state:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
          peer_groups:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                missing_policy:
                  type: dict
                  keys:
                    direction_in_action:
                      type: str
                      valid_values:
                      - deny
                      - deny-in-out
                      - permit
                    direction_out_action:
                      type: str
                      valid_values:
                      - deny
                      - deny-in-out
                      - permit
          neighbors:
            type: list
            primary_key: ip_address
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                missing_policy:
                  type: dict
                  keys:
                    direction_in_action:
                      type: str
                      valid_values:
                      - deny
                      - deny-in-out
                      - permit
                    direction_out_action:
                      type: str
                      valid_values:
                      - deny
                      - deny-in-out
                      - permit
          path_selection:
            type: dict
            keys:
              roles:
                type: dict
                keys:
                  producer:
                    type: bool
                  consumer:
                    type: bool
                  propagator:
                    type: bool
      address_family_flow_spec_ipv4:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
      address_family_flow_spec_ipv6:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              missing_policy:
                type: dict
                keys:
                  direction_in_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
                  direction_out_action:
                    type: str
                    valid_values:
                    - deny
                    - deny-in-out
                    - permit
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
      address_family_path_selection:
        type: dict
        keys:
          bgp:
            type: dict
            keys:
              additional_paths:
                type: dict
                keys:
                  receive:
                    type: bool
                  send:
                    type: dict
                    keys:
                      any:
                        type: bool
                      backup:
                        type: bool
                      ecmp:
                        type: bool
                      ecmp_limit:
                        type: int
                        description: Amount of ECMP paths to send.
                        convert_types:
                        - str
                        min: 2
                        max: 64
                      limit:
                        type: int
                        description: Amount of paths to send.
                        convert_types:
                        - str
                        min: 2
                        max: 64
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                additional_paths:
                  type: dict
                  keys:
                    install:
                      type: bool
                    install_ecmp_primary:
                      type: bool
                    receive:
                      type: bool
                    send:
                      type: dict
                      keys:
                        any:
                          type: bool
                        backup:
                          type: bool
                        ecmp:
                          type: bool
                        ecmp_limit:
                          type: int
                          description: Amount of ECMP paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
                        limit:
                          type: int
                          description: Amount of paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
          peer_groups:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                additional_paths:
                  type: dict
                  keys:
                    install:
                      type: bool
                    install_ecmp_primary:
                      type: bool
                    receive:
                      type: bool
                    send:
                      type: dict
                      keys:
                        any:
                          type: bool
                        backup:
                          type: bool
                        ecmp:
                          type: bool
                        ecmp_limit:
                          type: int
                          description: Amount of ECMP paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
                        limit:
                          type: int
                          description: Amount of paths to send.
                          convert_types:
                          - str
                          min: 2
                          max: 64
      address_family_vpn_ipv4:
        type: dict
        keys:
          domain_identifier:
            type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
          neighbor_default_encapsulation_mpls_next_hop_self:
            type: dict
            keys:
              source_interface:
                type: str
      address_family_vpn_ipv6:
        type: dict
        keys:
          domain_identifier:
            type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name.
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name.
                route_map_out:
                  type: str
                  description: Outbound route-map name.
                rcf_in:
                  type: str
                  description: 'Inbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
                rcf_out:
                  type: str
                  description: 'Outbound RCF function name with parenthesis.

                    Example: MyFunction(myarg).'
          neighbor_default_encapsulation_mpls_next_hop_self:
            type: dict
            keys:
              source_interface:
                type: str
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
              convert_types:
              - int
            rd:
              type: str
              description: Route distinguisher.
            evpn_multicast:
              type: bool
            evpn_multicast_address_family:
              type: dict
              description: Enable per-AF EVPN multicast settings.
              keys:
                ipv4:
                  type: dict
                  keys:
                    transit:
                      type: bool
                      description: Enable EVPN multicast transit mode.
            route_targets:
              type: dict
              keys:
                import:
                  type: list
                  primary_key: address_family
                  secondary_key: route_targets
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address_family:
                        type: str
                      route_targets:
                        type: list
                        items:
                          type: str
                      route_map:
                        type: str
                        description: Only applicable if `address_family` is one of
                          `evpn`, `vpn-ipv4` or `vpn-ipv6`.
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          Only applicable if `address_family` is one of `evpn`, `vpn-ipv4`
                          or `vpn-ipv6`.'
                      vpn_route_filter_rcf:
                        type: str
                        description: 'RCF function name with parenthesis for filtering
                          VPN routes. Also requires `rcf` to be set.

                          Example: MyFunction(myarg).

                          Only applicable if `address_family` is one of `vpn-ipv4`
                          or `vpn-ipv6`.'
                export:
                  type: list
                  primary_key: address_family
                  secondary_key: route_targets
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address_family:
                        type: str
                      route_targets:
                        type: list
                        items:
                          type: str
                      route_map:
                        type: str
                        description: Only applicable if `address_family` is one of
                          `evpn`, `vpn-ipv4` or `vpn-ipv6`.
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          Only applicable if `address_family` is one of `evpn`, `vpn-ipv4`
                          or `vpn-ipv6`.'
                      vpn_route_filter_rcf:
                        type: str
                        description: 'RCF function name with parenthesis for filtering
                          VPN routes. Also requires `rcf` to be set.

                          Example: MyFunction(myarg).

                          Only applicable if `address_family` is one of `vpn-ipv4`
                          or `vpn-ipv6`.'
            router_id:
              description: in IP address format A.B.C.D.
              type: str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>".
            networks:
              type: list
              primary_key: prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                  route_map:
                    type: str
            updates:
              type: dict
              keys:
                wait_for_convergence:
                  type: bool
                  description: 'Disables FIB updates and route advertisement when
                    the BGP instance is initiated until the BGP convergence state
                    is reached.

                    '
                wait_install:
                  type: bool
                  description: 'Do not advertise reachability to a prefix until that
                    prefix has been installed in hardware.

                    This will eliminate any temporary black holes due to a BGP speaker
                    advertising reachability to a prefix that may not yet be installed
                    into the forwarding plane.

                    '
            listen_ranges:
              type: list
              description: 'Improved "listen_ranges" data model to support multiple
                listen ranges and additional filter capabilities.

                '
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                  peer_id_include_router_id:
                    type: bool
                    description: Include router ID as part of peer filter.
                  peer_group:
                    type: str
                    description: Peer-group name.
                  peer_filter:
                    type: str
                    description: 'Peer-filter name.

                      note: `peer_filter`` or `remote_as` is required but mutually
                      exclusive.

                      If both are defined, peer_filter takes precedence.

                      '
                  remote_as:
                    type: str
                    description: 'BGP AS <1-4294967295> or AS number in asdot notation
                      "<1-65535>.<0-65535>".

                      For asdot notation in YAML inputs, the value must be put in
                      quotes, to prevent it from being interpreted as a float number.'
                    convert_types:
                    - int
            neighbors:
              type: list
              primary_key: ip_address
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  ip_address:
                    type: str
                  peer_group:
                    type: str
                    description: Peer-group name.
                  remote_as:
                    type: str
                    description: 'BGP AS <1-4294967295> or AS number in asdot notation
                      "<1-65535>.<0-65535>".

                      For asdot notation in YAML inputs, the value must be put in
                      quotes, to prevent it from being interpreted as a float number.'
                    convert_types:
                    - int
                  password:
                    type: str
                  passive:
                    type: bool
                  remove_private_as:
                    type: dict
                    description: Remove private AS numbers in outbound AS path.
                    keys:
                      enabled:
                        type: bool
                      all:
                        type: bool
                      replace_as:
                        type: bool
                  remove_private_as_ingress:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      replace_as:
                        type: bool
                  weight:
                    type: int
                    min: 0
                    max: 65535
                    convert_types:
                    - str
                  local_as:
                    type: str
                    description: 'BGP AS <1-4294967295> or AS number in asdot notation
                      "<1-65535>.<0-65535>".

                      For asdot notation in YAML inputs, the value must be put in
                      quotes, to prevent it from being interpreted as a float number.'
                    convert_types:
                    - int
                  as_path:
                    type: dict
                    description: BGP AS-PATH options.
                    keys:
                      remote_as_replace_out:
                        type: bool
                        description: Replace AS number with local AS number.
                      prepend_own_disabled:
                        type: bool
                        description: Disable prepending own AS number to AS path.
                  description:
                    type: str
                  route_reflector_client:
                    type: bool
                  ebgp_multihop:
                    type: int
                    min: 1
                    max: 255
                    description: Time-to-live in range of hops.
                  next_hop_self:
                    type: bool
                  shutdown:
                    type: bool
                  bfd:
                    type: bool
                    description: Enable BFD.
                  bfd_timers:
                    type: dict
                    description: 'Override default BFD timers. BFD must be enabled
                      with `bfd: true`.'
                    keys:
                      interval:
                        type: int
                        convert_types:
                        - str
                        min: 50
                        max: 60000
                        required: true
                        description: Interval in milliseconds.
                      min_rx:
                        type: int
                        convert_types:
                        - str
                        min: 50
                        max: 60000
                        required: true
                        description: Rate in milliseconds.
                      multiplier:
                        type: int
                        min: 3
                        max: 50
                        convert_types:
                        - str
                        required: true
                  timers:
                    type: str
                    description: BGP Keepalive and Hold Timer values in seconds as
                      string "<0-3600> <0-3600>".
                  rib_in_pre_policy_retain:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      all:
                        type: bool
                  send_community:
                    type: str
                    description: '''all'' or a combination of ''standard'', ''extended'',
                      ''large'' and ''link-bandwidth (w/options)''.'
                  maximum_routes:
                    type: int
                    convert_types:
                    - str
                  maximum_routes_warning_limit:
                    type: str
                    convert_types:
                    - int
                    description: 'Maximum number of routes after which a warning is
                      issued (0 means never warn) or

                      Percentage of maximum number of routes at which to warn ("<1-100>
                      percent").

                      '
                  maximum_routes_warning_only:
                    type: bool
                  allowas_in:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      times:
                        type: int
                        convert_types:
                        - str
                        min: 1
                        max: 10
                        description: Number of local ASNs allowed in a BGP update.
                  default_originate:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      always:
                        type: bool
                      route_map:
                        type: str
                  update_source:
                    type: str
                  route_map_in:
                    type: str
                    description: Inbound route-map name.
                  route_map_out:
                    type: str
                    description: Outbound route-map name.
                  prefix_list_in:
                    type: str
                    description: Inbound prefix-list name.
                    deprecation:
                      warning: true
                      new_key: router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_in
                        or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_in
                      remove_in_version: 5.0.0
                  prefix_list_out:
                    type: str
                    description: Outbound prefix-list name.
                    deprecation:
                      warning: true
                      new_key: router_bgp.vrfs[].address_family_ipv4.neighbors[].prefix_list_out
                        or router_bgp.vrfs[].address_family_ipv6.neighbors[].prefix_list_out
                      remove_in_version: 5.0.0
            neighbor_interfaces:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Interface name.
                  remote_as:
                    type: str
                    description: 'BGP AS <1-4294967295> or AS number in asdot notation
                      "<1-65535>.<0-65535>".

                      For asdot notation in YAML inputs, the value must be put in
                      quotes, to prevent it from being interpreted as a float number.'
                    convert_types:
                    - int
                  peer_group:
                    type: str
                    description: Peer-group name.
                  peer_filter:
                    type: str
                    description: Peer-filter name.
                  description:
                    type: str
            redistribute_routes:
              type: list
              primary_key: source_protocol
              convert_types:
              - dict
              - list
              items:
                type: dict
                keys:
                  source_protocol:
                    type: str
                  route_map:
                    type: str
                  include_leaked:
                    type: bool
                  rcf:
                    type: str
                    description: 'RCF function name with parenthesis.

                      Example: MyFunction(myarg).

                      `route_map` and `rcf` are mutually exclusive. `route_map` takes
                      precedence.

                      Only applicable if `source_protocol` is one of `connected`,
                      `dynamic`, `isis`, `static` and `user`.'
            aggregate_addresses:
              type: list
              primary_key: prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                  advertise_only:
                    type: bool
                  as_set:
                    type: bool
                  advertise_map:
                    type: str
                    description: Route-map name.
                  supress_map:
                    type: str
                    description: Route-map name.
                  summary_only:
                    type: bool
                  attribute_map:
                    type: str
                  match_map:
                    type: str
            address_family_ipv4:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                    additional_paths:
                      type: dict
                      keys:
                        install:
                          type: bool
                        install_ecmp_primary:
                          type: bool
                        receive:
                          type: bool
                        send:
                          type: dict
                          keys:
                            any:
                              type: bool
                            backup:
                              type: bool
                            ecmp:
                              type: bool
                            ecmp_limit:
                              type: int
                              description: Amount of ECMP paths to send.
                              convert_types:
                              - str
                              min: 2
                              max: 64
                            limit:
                              type: int
                              description: Amount of paths to send.
                              convert_types:
                              - str
                              min: 2
                              max: 64
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
                      route_map_in:
                        type: str
                        description: Inbound route-map name.
                      route_map_out:
                        type: str
                        description: Outbound route-map name.
                      rcf_in:
                        type: str
                        description: 'Inbound RCF function name with parenthesis.

                          Example: MyFunction(myarg).'
                      rcf_out:
                        type: str
                        description: 'Outbound RCF function name with parenthesis.

                          Example: MyFunction(myarg).'
                      prefix_list_in:
                        type: str
                        description: Inbound prefix-list name.
                      prefix_list_out:
                        type: str
                        description: Outbound prefix-list name.
                      next_hop:
                        type: dict
                        keys:
                          address_family_ipv6:
                            type: dict
                            keys:
                              enabled:
                                type: bool
                                required: true
                              originate:
                                type: bool
                networks:
                  type: list
                  primary_key: prefix
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      prefix:
                        type: str
                        description: IPv4 prefix "A.B.C.D/E".
                      route_map:
                        type: str
                redistribute_routes:
                  type: list
                  primary_key: source_protocol
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      source_protocol:
                        type: str
                        valid_values:
                        - attached-host
                        - bgp
                        - connected
                        - dynamic
                        - isis
                        - ospf
                        - ospfv3
                        - rip
                        - static
                        - user
                      route_map:
                        type: str
                      include_leaked:
                        type: bool
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          `route_map` and `rcf` are mutually exclusive. `route_map`
                          takes precedence.

                          Only applicable if `source_protocol` is one of `connected`,
                          `dynamic`, `isis`, `static` and `user`.'
            address_family_ipv6:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                    additional_paths:
                      type: dict
                      keys:
                        install:
                          type: bool
                        install_ecmp_primary:
                          type: bool
                        receive:
                          type: bool
                        send:
                          type: dict
                          keys:
                            any:
                              type: bool
                            backup:
                              type: bool
                            ecmp:
                              type: bool
                            ecmp_limit:
                              type: int
                              description: Amount of ECMP paths to send.
                              convert_types:
                              - str
                              min: 2
                              max: 64
                            limit:
                              type: int
                              description: Amount of paths to send.
                              convert_types:
                              - str
                              min: 2
                              max: 64
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
                      route_map_in:
                        type: str
                        description: Inbound route-map name.
                      route_map_out:
                        type: str
                        description: Outbound route-map name.
                      rcf_in:
                        type: str
                        description: 'Inbound RCF function name with parenthesis.

                          Example: MyFunction(myarg).'
                      rcf_out:
                        type: str
                        description: 'Outbound RCF function name with parenthesis.

                          Example: MyFunction(myarg).'
                      prefix_list_in:
                        type: str
                        description: Inbound prefix-list name.
                      prefix_list_out:
                        type: str
                        description: Outbound prefix-list name.
                networks:
                  type: list
                  primary_key: prefix
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      prefix:
                        type: str
                        description: IPv6 prefix "A:B:C:D:E:F:G:H/I".
                      route_map:
                        type: str
                redistribute_routes:
                  type: list
                  primary_key: source_protocol
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      source_protocol:
                        type: str
                        valid_values:
                        - attached-host
                        - bgp
                        - connected
                        - dhcp
                        - dynamic
                        - isis
                        - ospfv3
                        - static
                        - user
                      route_map:
                        type: str
                      include_leaked:
                        type: bool
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          `route_map` and `rcf` are mutually exclusive. `route_map`
                          takes precedence.

                          Only applicable if `source_protocol` is one of `connected`,
                          `dynamic`, `isis`, `static` and `user`.'
            address_family_ipv4_multicast:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                    additional_paths:
                      type: dict
                      keys:
                        receive:
                          type: bool
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
                      route_map_in:
                        type: str
                        description: Inbound route-map name.
                      route_map_out:
                        type: str
                        description: Outbound route-map name.
                networks:
                  type: list
                  primary_key: prefix
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      prefix:
                        type: str
                        description: IPv6 prefix "A.B.C.D/E".
                      route_map:
                        type: str
                redistribute_routes:
                  type: list
                  primary_key: source_protocol
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      source_protocol:
                        type: str
                        valid_values:
                        - attached-host
                        - connected
                        - isis
                        - ospf
                        - ospfv3
                        - static
                      route_map:
                        type: str
                      include_leaked:
                        type: bool
                        description: Only applicable if `source_protocol` is `isis`.
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          `route_map` and `rcf` are mutually exclusive. `route_map`
                          takes precedence.

                          Only applicable if `source_protocol` is `isis`.'
            address_family_ipv6_multicast:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                    additional_paths:
                      type: dict
                      keys:
                        receive:
                          type: bool
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
                      route_map_in:
                        type: str
                        description: Inbound route-map name.
                      route_map_out:
                        type: str
                        description: Outbound route-map name.
                networks:
                  type: list
                  primary_key: prefix
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      prefix:
                        type: str
                        description: IPv6 prefix "A:B:C:D:E:F:G:H/I".
                      route_map:
                        type: str
                redistribute_routes:
                  type: list
                  primary_key: source_protocol
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      source_protocol:
                        type: str
                        valid_values:
                        - connected
                        - isis
                        - ospf
                        - ospfv3
                        - static
                      route_map:
                        type: str
                      include_leaked:
                        type: bool
                        description: Only applicable if `source_protocol` is `isis`.
                      rcf:
                        type: str
                        description: 'RCF function name with parenthesis.

                          Example: MyFunction(myarg).

                          `route_map` and `rcf` are mutually exclusive. `route_map`
                          takes precedence.

                          Only applicable if `source_protocol` is `isis`.'
            address_family_flow_spec_ipv4:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
            address_family_flow_spec_ipv6:
              type: dict
              keys:
                bgp:
                  type: dict
                  keys:
                    missing_policy:
                      type: dict
                      keys:
                        direction_in_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                        direction_out_action:
                          type: str
                          valid_values:
                          - deny
                          - deny-in-out
                          - permit
                neighbors:
                  type: list
                  primary_key: ip_address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      ip_address:
                        type: str
                      activate:
                        type: bool
            address_families:
              type: list
              primary_key: address_family
              convert_types:
              - dict
              deprecation:
                warning: true
                new_key: address_family_*
                remove_in_version: 5.0.0
              items:
                type: dict
                keys:
                  address_family:
                    type: str
                  bgp:
                    type: dict
                    keys:
                      missing_policy:
                        type: dict
                        keys:
                          direction_in_action:
                            type: str
                            valid_values:
                            - deny
                            - deny-in-out
                            - permit
                          direction_out_action:
                            type: str
                            valid_values:
                            - deny
                            - deny-in-out
                            - permit
                      additional_paths:
                        type: list
                        items:
                          type: str
                  neighbors:
                    type: list
                    primary_key: ip_address
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        ip_address:
                          type: str
                        activate:
                          type: bool
                        route_map_in:
                          type: str
                          description: Inbound route-map name.
                        route_map_out:
                          type: str
                          description: Outbound route-map name.
                  peer_groups:
                    type: list
                    primary_key: name
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        name:
                          type: str
                          description: Peer-group name.
                        activate:
                          type: bool
                        next_hop:
                          type: dict
                          keys:
                            address_family_ipv6_originate:
                              type: bool
                  networks:
                    type: list
                    primary_key: prefix
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        prefix:
                          type: str
                          description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I".
                        route_map:
                          type: str
            eos_cli:
              type: str
              description: 'Multiline EOS CLI rendered directly on the Router BGP,
                VRF definition in the final EOS configuration.

                '
      session_trackers:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Name of session tracker.
            recovery_delay:
              type: int
              description: Recovery delay in seconds.
              convert_types:
              - str
              min: 1
              max: 3600
      eos_cli:
        type: str
        description: Multiline EOS CLI rendered directly on the Router BGP in the
          final EOS configuration.
  router_general:
    type: dict
    display_name: Router General configuration
    keys:
      router_id:
        type: dict
        keys:
          ipv4:
            type: str
            description: IPv4 Address.
          ipv6:
            type: str
            description: IPv6 Address.
      nexthop_fast_failover:
        type: bool
        default: false
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Destination-VRF.
              convert_types:
              - int
            leak_routes:
              type: list
              items:
                type: dict
                keys:
                  source_vrf:
                    type: str
                    convert_types:
                    - int
                  subscribe_policy:
                    type: str
                    description: Route-Map Policy.
            routes:
              type: dict
              keys:
                dynamic_prefix_lists:
                  type: list
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
                        description: Dynamic Prefix List Name.
      control_functions:
        type: dict
        description: 'Routing control functions (RCF) used to filter and update routes
          from a peer or during redistributions.

          Warning:

          This configuration cannot be pushed with `eos_config_deploy_eapi`, because
          of limitations in `arista.eos` and `ansible.netcommon` plugins.

          The configuration can be pushed via CloudVision with `eos_config_deploy_cvp`
          or `cv_deploy`.'
        keys:
          code_units:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Name of the code unit.
                content:
                  type: str
                  required: true
                  description: "Content of route control function.\ne.g.\nfunction
                    ACCEPT_ALL() {\n  return true;\n  }\nEOF"
  router_igmp:
    type: dict
    display_name: Router IGMP Configuration
    keys:
      host_proxy_match_mroute:
        type: str
        description: 'Specify conditions for sending IGMP joins for host-proxy.

          ''iif'' will enable igmp host-proxy to work in iif aware.

          ''all'' will enable igmp host-proxy to work in iif unaware mode (EOS default).

          '
        valid_values:
        - all
        - iif
      ssm_aware:
        type: bool
      vrfs:
        type: list
        description: 'Configure IGMP in a VRF.

          VRF ''default'' is not supported in EOS, please see keys directly under
          ''router_igmp''.'
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
            host_proxy_match_mroute:
              type: str
              description: 'Specify conditions for sending IGMP joins for host-proxy.

                ''iif'' will enable igmp host-proxy to work in iif aware.

                ''all'' will enable igmp host-proxy to work in iif unaware mode (EOS
                default).

                '
              valid_values:
              - all
              - iif
  router_internet_exit:
    type: dict
    description: Internet-exit feature to configure internet bound service for virtual
      topologies.
    keys:
      policies:
        type: list
        description: Internet-exit policy represent a policy which can be attached
          to a virtual topology profile.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            exit_groups:
              type: list
              description: The exit groups that are configured under a policy are
                strictly ordered, meaning an exit group appearing first has more priority
                than the exit group that follows it.
              items:
                type: dict
                keys:
                  name:
                    type: str
      exit_groups:
        type: list
        description: 'Exit groups represent a group of exit options (connections).

          Traffic flows are load balanced in a round robin fashion across all the
          members (exits) of the exit-group.'
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            fib_default:
              type: bool
              description: Fib default exit indicates that the flows that select this
                exit will follow the default route available in the VRF of the flow.
            local_connections:
              type: list
              description: 'Local connections refer to connections configured under
                the `router_service_insertion`.

                The service-insertion module reports the health of the connection
                and the exit will qualify for use only when it is healthy.'
              items:
                type: dict
                keys:
                  name:
                    type: str
  router_isis:
    type: dict
    keys:
      instance:
        type: str
        required: true
        description: ISIS Instance Name.
      net:
        type: str
        description: CLNS Address like "49.0001.0001.0000.0001.00".
      router_id:
        type: str
        description: IPv4 Address.
      is_type:
        display_name: IS Type
        type: str
        valid_values:
        - level-1
        - level-1-2
        - level-2
      log_adjacency_changes:
        type: bool
      mpls_ldp_sync_default:
        type: bool
      timers:
        type: dict
        keys:
          local_convergence:
            type: dict
            keys:
              protected_prefixes:
                type: bool
              delay:
                type: int
                convert_types:
                - str
                default: 10000
                description: Delay in milliseconds.
      set_overload_bit:
        type: dict
        keys:
          enabled:
            type: bool
          on_startup:
            type: dict
            keys:
              delay:
                type: int
                convert_types:
                - str
                description: Number of seconds.
              wait_for_bgp:
                type: dict
                keys:
                  enabled:
                    type: bool
                  timeout:
                    type: int
                    convert_types:
                    - str
                    description: Number of seconds.
      authentication:
        type: dict
        keys:
          both:
            type: dict
            description: Authentication settings for level-1 and level-2. 'both' takes
              precedence over 'level_1' and 'level_2' settings.
            keys:
              key_type:
                type: str
                convert_types:
                - int
                valid_values:
                - '0'
                - '7'
                - 8a
                description: Configure authentication key type. Default key_id is
                  0.
              key:
                type: str
                description: Password string.
              key_ids:
                type: list
                convert_types:
                - dict
                primary_key: id
                items:
                  type: dict
                  keys:
                    id:
                      type: int
                      convert_types:
                      - str
                      required: true
                      min: 1
                      max: 65535
                      description: Configure authentication key-id.
                    algorithm:
                      type: str
                      required: true
                      valid_values:
                      - sha-1
                      - sha-224
                      - sha-256
                      - sha-384
                      - sha-512
                    key_type:
                      type: str
                      convert_types:
                      - int
                      required: true
                      valid_values:
                      - '0'
                      - '7'
                      - 8a
                      description: Configure authentication key type.
                    key:
                      type: str
                      required: true
                      description: Password string.
                    rfc_5310:
                      description: SHA digest computation according to rfc5310.
                      type: bool
              mode:
                type: str
                description: Authentication mode.
                valid_values:
                - md5
                - sha
                - text
                - shared_secret
              sha:
                type: dict
                description: Required settings for authentication mode 'sha'.
                keys:
                  key_id:
                    type: int
                    convert_types:
                    - str
                    required: true
                    min: 1
                    max: 65535
              shared_secret:
                type: dict
                description: Required settings for authentication mode 'shared_secret'.
                keys:
                  profile:
                    type: str
                    required: true
                  algorithm:
                    type: str
                    required: true
                    valid_values:
                    - md5
                    - sha-1
                    - sha-224
                    - sha-256
                    - sha-384
                    - sha-512
              rx_disabled:
                type: bool
          level_1:
            type: dict
            description: Authentication settings for level-1. 'both' takes precedence
              over 'level_1' and 'level_2' settings.
            $ref: eos_cli_config_gen#/keys/router_isis/keys/authentication/keys/both
          level_2:
            type: dict
            description: Authentication settings for level-2. 'both' takes precedence
              over 'level_1' and 'level_2' settings.
            $ref: eos_cli_config_gen#/keys/router_isis/keys/authentication/keys/both
      advertise:
        type: dict
        keys:
          passive_only:
            type: bool
      address_family:
        type: list
        items:
          type: str
          valid_values:
          - ipv4
          - ipv6
          - ipv4 unicast
          - ipv6 unicast
          description: Address Family.
          deprecation:
            warning: true
            new_key: address_family_ipv4.enabled or address_family_ipv6.enabled
            remove_in_version: 5.0.0
      isis_af_defaults:
        type: list
        items:
          type: str
          description: 'EOS CLI rendered under the address families.

            Example "maximum-paths 64"

            '
          deprecation:
            warning: true
            new_key: address_family_ipv4/address_family_ipv6
            remove_in_version: 5.0.0
      redistribute_routes:
        type: list
        items:
          type: dict
          keys:
            source_protocol:
              type: str
              required: true
              valid_values:
              - bgp
              - connected
              - isis
              - ospf
              - ospfv3
              - static
            route_map:
              type: str
              description: Route-map name.
            include_leaked:
              type: bool
            ospf_route_type:
              type: str
              valid_values:
              - external
              - internal
              - nssa-external
              description: ospf_route_type is required with source_protocols 'ospf'
                and 'ospfv3'.
      address_family_ipv4:
        type: dict
        keys:
          enabled:
            type: bool
          maximum_paths:
            type: int
            convert_types:
            - str
            min: 1
            max: 128
          bfd_all_interfaces:
            type: bool
            description: Enable BFD on all interfaces.
          fast_reroute_ti_lfa:
            type: dict
            keys:
              mode:
                type: str
                valid_values:
                - link-protection
                - node-protection
              level:
                type: str
                valid_values:
                - level-1
                - level-2
              srlg:
                type: dict
                description: Shared Risk Link Group.
                keys:
                  enable:
                    type: bool
                  strict:
                    type: bool
          tunnel_source_labeled_unicast:
            type: dict
            keys:
              enabled:
                type: bool
              rcf:
                type: str
                description: Route Control Function.
      address_family_ipv6:
        type: dict
        keys:
          enabled:
            type: bool
          maximum_paths:
            type: int
            convert_types:
            - str
            min: 1
            max: 128
          bfd_all_interfaces:
            type: bool
            description: Enable BFD on all interfaces.
          fast_reroute_ti_lfa:
            type: dict
            keys:
              mode:
                type: str
                valid_values:
                - link-protection
                - node-protection
              level:
                type: str
                valid_values:
                - level-1
                - level-2
                description: Optional, default is to protect all levels.
              srlg:
                type: dict
                description: Shared Risk Link Group.
                keys:
                  enable:
                    type: bool
                  strict:
                    type: bool
      segment_routing_mpls:
        type: dict
        keys:
          enabled:
            type: bool
          router_id:
            type: str
          prefix_segments:
            type: list
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  type: str
                index:
                  type: int
                  convert_types:
                  - str
      spf_interval:
        type: dict
        keys:
          interval:
            type: int
            convert_types:
            - str
            description: 'Maximum interval between two SPFs in seconds or milliseconds.

              Range in seconds: <1-300>

              Range in milliseconds: <1-300000>'
          interval_unit:
            type: str
            valid_values:
            - seconds
            - milliseconds
            description: If interval unit is not defined EOS takes `seconds` by default.
          wait_interval:
            type: int
            convert_types:
            - str
            min: 1
            max: 300000
            description: Initial wait interval for SPF in milliseconds.
          hold_interval:
            type: int
            convert_types:
            - str
            min: 1
            max: 300000
            description: Hold interval between the first and second SPF runs in milliseconds.
      graceful_restart:
        type: dict
        keys:
          enabled:
            type: bool
          restart_hold_time:
            type: int
            convert_types:
            - str
            min: 5
            max: 300
            description: Number of seconds.
          t2:
            type: dict
            keys:
              level_1_wait_time:
                type: int
                convert_types:
                - str
                min: 5
                max: 300
                description: Level-1 LSP database sync wait time in seconds.
              level_2_wait_time:
                type: int
                convert_types:
                - str
                min: 5
                max: 300
                description: Level-2 LSP database sync wait time in seconds.
      eos_cli:
        type: str
        description: Multiline EOS CLI rendered directly on the router isis in the
          final EOS configuration.
  router_l2_vpn:
    type: dict
    keys:
      arp_learning_bridged:
        type: bool
      arp_proxy:
        type: dict
        keys:
          prefix_list:
            type: str
            description: Prefix-list name. ARP Proxying is disabled for IPv4 addresses
              defined in the prefix-list.
      arp_selective_install:
        type: bool
      nd_learning_bridged:
        type: bool
      nd_proxy:
        type: dict
        keys:
          prefix_list:
            type: str
            description: Prefix-list name. Neighbor Discovery Proxying is disabled
              for IPv6 addresses defined in the prefix-list.
      nd_rs_flooding_disabled:
        type: bool
      virtual_router_nd_ra_flooding_disabled:
        type: bool
  router_msdp:
    type: dict
    keys:
      originator_id_local_interface:
        type: str
        description: Interface to use for originator ID.
      rejected_limit:
        type: int
        convert_types:
        - str
        description: Maximum number of rejected SA messages allowed in cache.
        min: 0
        max: 40000
      forward_register_packets:
        type: bool
      connection_retry_interval:
        type: int
        convert_types:
        - str
        min: 1
        max: 65535
      group_limits:
        type: list
        primary_key: source_prefix
        items:
          type: dict
          keys:
            source_prefix:
              type: str
              description: Source address prefix.
            limit:
              type: int
              convert_types:
              - str
              description: Limit for SAs matching the source address prefix.
              min: 0
              max: 40000
              required: true
      peers:
        type: list
        primary_key: ipv4_address
        items:
          type: dict
          keys:
            ipv4_address:
              type: str
              description: Peer IP Address.
            default_peer:
              type: dict
              keys:
                enabled:
                  type: bool
                prefix_list:
                  type: str
                  description: Prefix list to filter source of SA messages.
            local_interface:
              type: str
            description:
              type: str
            disabled:
              type: bool
              description: Disable the MSDP peer.
            sa_limit:
              type: int
              convert_types:
              - str
              description: Maximum number of SA messages allowed in cache.
              min: 0
              max: 40000
            mesh_groups:
              type: list
              primary_key: name
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Mesh group name.
            keepalive:
              type: dict
              keys:
                keepalive_timer:
                  type: int
                  convert_types:
                  - str
                  required: true
                  min: 1
                  max: 65535
                hold_timer:
                  type: int
                  convert_types:
                  - str
                  required: true
                  description: Must be greater than keepalive timer.
                  min: 1
                  max: 65535
            sa_filter:
              type: dict
              keys:
                in_list:
                  type: str
                  description: ACL to filter inbound SA messages.
                out_list:
                  type: str
                  description: ACL to filter outbound SA messages.
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
              convert_types:
              - int
            originator_id_local_interface:
              type: str
              description: Interface to use for originator ID.
            rejected_limit:
              type: int
              convert_types:
              - str
              description: Maximum number of rejected SA messages allowed in cache.
              min: 0
              max: 40000
            forward_register_packets:
              type: bool
            connection_retry_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 65535
            group_limits:
              type: list
              primary_key: source_prefix
              items:
                type: dict
                keys:
                  source_prefix:
                    type: str
                    description: Source address prefix.
                  limit:
                    type: int
                    convert_types:
                    - str
                    description: Limit for SAs matching the source address prefix.
                    min: 0
                    max: 40000
                    required: true
            peers:
              type: list
              primary_key: ipv4_address
              items:
                type: dict
                keys:
                  ipv4_address:
                    type: str
                    description: Peer IP Address.
                  default_peer:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      prefix_list:
                        type: str
                        description: Prefix list to filter source of SA messages.
                  local_interface:
                    type: str
                  description:
                    type: str
                  disabled:
                    type: bool
                    description: Disable the MSDP peer.
                  sa_limit:
                    type: int
                    convert_types:
                    - str
                    description: Maximum number of SA messages allowed in cache.
                    min: 0
                    max: 40000
                  mesh_groups:
                    type: list
                    primary_key: name
                    items:
                      type: dict
                      keys:
                        name:
                          type: str
                          description: Mesh group name.
                  keepalive:
                    type: dict
                    keys:
                      keepalive_timer:
                        type: int
                        convert_types:
                        - str
                        required: true
                        min: 1
                        max: 65535
                      hold_timer:
                        type: int
                        convert_types:
                        - str
                        required: true
                        description: Must be greater than keepalive timer.
                        min: 1
                        max: 65535
                  sa_filter:
                    type: dict
                    keys:
                      in_list:
                        type: str
                        description: ACL to filter inbound SA messages.
                      out_list:
                        type: str
                        description: ACL to filter outbound SA messages.
  router_multicast:
    type: dict
    keys:
      ipv4:
        type: dict
        keys:
          activity_polling_interval:
            type: int
            convert_types:
            - str
            min: 1
            max: 60
            description: MFIB entry activity polling interval.
          counters:
            type: dict
            keys:
              rate_period_decay:
                description: Rate in seconds.
                type: int
                min: 0
                max: 600
                convert_types:
                - str
          routing:
            type: bool
          multipath:
            type: str
            valid_values:
            - none
            - deterministic
            - deterministic color
            - deterministic router-id
          software_forwarding:
            type: str
            valid_values:
            - kernel
            - sfe
          rpf:
            type: dict
            keys:
              routes:
                type: list
                items:
                  type: dict
                  keys:
                    source_prefix:
                      description: Source address A.B.C.D or Source prefix A.B.C.D/E.
                      type: str
                      required: true
                    destinations:
                      type: list
                      required: true
                      items:
                        type: dict
                        keys:
                          nexthop:
                            description: Next-hop IP address or interface name.
                            type: str
                            required: true
                          distance:
                            description: Administrative distance for this route.
                            type: int
                            min: 1
                            max: 255
                            convert_types:
                            - str
      ipv6:
        type: dict
        keys:
          activity_polling_interval:
            type: int
            convert_types:
            - str
            min: 1
            max: 60
            description: MFIB entry activity polling interval.
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              convert_types:
              - int
            ipv4:
              type: dict
              keys:
                routing:
                  type: bool
  router_ospf:
    type: dict
    display_name: Router OSPF Configuration
    keys:
      process_ids:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
              description: OSPF Process ID.
            vrf:
              type: str
              description: VRF Name for OSPF Process.
              convert_types:
              - int
            passive_interface_default:
              type: bool
            router_id:
              type: str
              description: IPv4 Address.
            distance:
              type: dict
              keys:
                external:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
                inter_area:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
                intra_area:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
            log_adjacency_changes_detail:
              type: bool
            network_prefixes:
              type: list
              primary_key: ipv4_prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  ipv4_prefix:
                    type: str
                  area:
                    type: str
            bfd_enable:
              type: bool
            bfd_adjacency_state_any:
              type: bool
            no_passive_interfaces:
              type: list
              items:
                type: str
                description: Interface Name.
            distribute_list_in:
              type: dict
              keys:
                route_map:
                  type: str
            max_lsa:
              type: int
              convert_types:
              - str
            timers:
              type: dict
              keys:
                lsa:
                  type: dict
                  keys:
                    rx_min_interval:
                      type: int
                      convert_types:
                      - str
                      description: Min interval in msecs between accepting the same
                        LSA.
                      min: 0
                      max: 600000
                    tx_delay:
                      type: dict
                      keys:
                        initial:
                          type: int
                          convert_types:
                          - str
                          description: Delay to generate first occurrence of LSA in
                            msecs.
                          min: 0
                          max: 600000
                        min:
                          type: int
                          convert_types:
                          - str
                          description: Min delay between originating the same LSA
                            in msecs.
                          min: 1
                          max: 600000
                        max:
                          type: int
                          convert_types:
                          - str
                          description: 1-600000 Maximum delay between originating
                            the same LSA in msec.
                          min: 1
                          max: 600000
                spf_delay:
                  type: dict
                  keys:
                    initial:
                      type: int
                      convert_types:
                      - str
                      description: Initial SPF schedule delay in msecs.
                      min: 0
                      max: 600000
                    min:
                      type: int
                      convert_types:
                      - str
                      description: Min Hold time between two SPFs in msecs.
                      min: 0
                      max: 65535000
                    max:
                      type: int
                      convert_types:
                      - str
                      description: Max wait time between two SPFs in msecs.
                      min: 0
                      max: 65535000
            default_information_originate:
              type: dict
              keys:
                always:
                  type: bool
                metric:
                  type: int
                  convert_types:
                  - str
                  description: Metric for default route.
                  min: 1
                  max: 65535
                metric_type:
                  type: int
                  convert_types:
                  - str
                  valid_values:
                  - 1
                  - 2
                  description: OSPF metric type for default route.
            summary_addresses:
              type: list
              primary_key: prefix
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: Summary Prefix Address.
                  tag:
                    type: int
                  attribute_map:
                    type: str
                  not_advertise:
                    type: bool
            redistribute:
              type: dict
              keys:
                static:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name.
                    include_leaked:
                      type: bool
                connected:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name.
                    include_leaked:
                      type: bool
                bgp:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name.
                    include_leaked:
                      type: bool
            auto_cost_reference_bandwidth:
              type: int
              convert_types:
              - str
              description: Bandwidth in mbps.
            areas:
              type: list
              primary_key: id
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  id:
                    type: str
                    convert_types:
                    - int
                  filter:
                    type: dict
                    keys:
                      networks:
                        type: list
                        items:
                          type: str
                          description: IPv4 Prefix.
                      prefix_list:
                        type: str
                        description: Prefix-List Name.
                  type:
                    type: str
                    valid_values:
                    - normal
                    - stub
                    - nssa
                    default: normal
                  no_summary:
                    type: bool
                  nssa_only:
                    type: bool
                  default_information_originate:
                    type: dict
                    keys:
                      metric:
                        type: int
                        convert_types:
                        - str
                        description: Metric for default route.
                        min: 1
                        max: 65535
                      metric_type:
                        type: int
                        convert_types:
                        - str
                        valid_values:
                        - 1
                        - 2
                        description: OSPF metric type for default route.
            maximum_paths:
              type: int
              convert_types:
              - str
              min: 1
              max: 128
            max_metric:
              type: dict
              keys:
                router_lsa:
                  type: dict
                  keys:
                    external_lsa:
                      type: dict
                      keys:
                        override_metric:
                          type: int
                          convert_types:
                          - str
                          min: 1
                          max: 16777215
                    include_stub:
                      type: bool
                    on_startup:
                      type: str
                      convert_types:
                      - int
                      description: '"wait-for-bgp" or Integer 5-86400.

                        Example: "wait-for-bgp" Or "222"

                        '
                    summary_lsa:
                      type: dict
                      keys:
                        override_metric:
                          type: int
                          convert_types:
                          - str
                          min: 1
                          max: 16777215
            mpls_ldp_sync_default:
              type: bool
            eos_cli:
              type: str
              description: Multiline EOS CLI rendered directly on the Router OSPF
                process ID in the final EOS configuration.
  router_path_selection:
    type: dict
    description: Dynamic path selection configuration.
    keys:
      peer_dynamic_source:
        type: str
        valid_values:
        - stun
        description: Source of dynamic peer discovery.
      path_groups:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Path group name.
            id:
              type: int
              description: Path group ID.
              convert_types:
              - str
              min: 1
              max: 65535
            ipsec_profile:
              type: str
              description: IPSec profile for the path group.
            flow_assignment:
              type: str
              valid_values:
              - lan
              description: Flow assignment `lan` can not be configured in a path group
                with dynamic peers.
            local_interfaces:
              type: list
              primary_key: name
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Local interface name.
                    pattern: ^Ethernet\d+(/\d+)*(\.\d+)?$
                  public_address:
                    type: str
                    description: Public IP assigned by NAT.
                  stun:
                    type: dict
                    keys:
                      server_profiles:
                        type: list
                        required: true
                        min_length: 1
                        max_length: 12
                        description: STUN server-profile names.
                        items:
                          type: str
            local_ips:
              type: list
              primary_key: ip_address
              items:
                type: dict
                keys:
                  ip_address:
                    type: str
                  public_address:
                    type: str
                    description: Public IP assigned by NAT.
                  stun:
                    type: dict
                    keys:
                      server_profiles:
                        type: list
                        required: true
                        min_length: 1
                        max_length: 12
                        description: STUN server-profile names.
                        items:
                          type: str
            dynamic_peers:
              type: dict
              description: Flow assignment `lan` can not be configured in a path group
                with dynamic peers.
              keys:
                enabled:
                  type: bool
                  description: Enable `peer dynamic`.
                ip_local:
                  type: bool
                  description: Prefer local IP address.
                ipsec:
                  type: bool
                  description: IPsec configuration for dynamic peers.
            static_peers:
              type: list
              primary_key: router_ip
              items:
                type: dict
                keys:
                  router_ip:
                    type: str
                    description: Peer router IP.
                  name:
                    type: str
                    description: Name of the site.
                  ipv4_addresses:
                    type: list
                    description: Static IPv4 addresses.
                    items:
                      type: str
            keepalive:
              type: dict
              keys:
                auto:
                  type: bool
                  description: Enable adaptive keepalive and feedback interval.
                  default: false
                interval:
                  type: int
                  description: Interval in milliseconds.
                  min: 50
                  max: 60000
                  convert_types:
                  - str
                failure_threshold:
                  type: int
                  min: 2
                  max: 100
                  description: Failure threshold in number of intervals. Required
                    when `interval` is set.
                  convert_types:
                  - str
      load_balance_policies:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Load-balance policy name.
            lowest_hop_count:
              type: bool
              description: Prefer paths with lowest hop-count.
            jitter:
              type: int
              description: Jitter requirement for this load balance policy in milliseconds.
              convert_types:
              - str
              min: 0
              max: 10000
            latency:
              type: int
              description: One way delay requirement for this load balance policy
                in milliseconds.
              convert_types:
              - str
              min: 0
              max: 10000
            loss_rate:
              type: str
              description: 'Loss Rate requirement in percentage for this load balance
                policy.

                Value between 0.00 and 100.00.'
              convert_types:
              - int
              - float
              pattern: ^\d+(\.\d{1,2})?$
            path_groups:
              type: list
              primary_key: name
              description: List of path-groups to use for this load balance policy.
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Path-group name.
                  priority:
                    type: int
                    description: 'Priority for this path-group.

                      The EOS default value is 1.'
                    convert_types:
                    - str
                    min: 1
                    max: 65535
      policies:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: DPS policy name.
            default_match:
              type: dict
              keys:
                load_balance:
                  type: str
                  description: Name of the load-balance policy.
            rules:
              type: list
              primary_key: id
              items:
                type: dict
                keys:
                  id:
                    type: int
                    description: Rule ID.
                    convert_types:
                    - str
                    min: 1
                    max: 255
                  application_profile:
                    type: str
                    required: true
                  load_balance:
                    type: str
                    description: Name of the load-balance policy.
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
            path_selection_policy:
              type: str
              description: DPS policy name to use for this VRF.
      tcp_mss_ceiling:
        type: dict
        keys:
          ipv4_segment_size:
            type: str
            description: 'Segment Size for IPv4.

              Can be an integer in the range 64-65515 or "auto".

              "auto" will enable auto-discovery which clamps the TCP MSS value to
              the minimum of all the direct paths

              and multi-hop path MTU towards a remote VTEP (minus 40bytes to account
              for IP + TCP header).'
            convert_types:
            - int
          direction:
            type: str
            valid_values:
            - ingress
            default: ingress
            description: 'Enforce on packets through DPS tunnel for a specific direction.

              Only ''ingress'' direction is supported.'
  router_pim_sparse_mode:
    type: dict
    keys:
      ipv4:
        type: dict
        keys:
          bfd:
            type: bool
            description: Enable/Disable BFD.
          ssm_range:
            type: str
            description: IPv4 Prefix associated with SSM.
          rp_addresses:
            type: list
            primary_key: address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                address:
                  type: str
                  description: RP Address.
                groups:
                  type: list
                  convert_types:
                  - dict
                  items:
                    type: str
                access_lists:
                  type: list
                  items:
                    type: str
                priority:
                  type: int
                  min: 0
                  max: 255
                hashmask:
                  type: int
                  min: 0
                  max: 32
                override:
                  type: bool
          anycast_rps:
            type: list
            primary_key: address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                address:
                  type: str
                  description: Anycast RP Address.
                other_anycast_rp_addresses:
                  type: list
                  primary_key: address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address:
                        type: str
                        description: Other Anycast RP Address.
                      register_count:
                        type: int
                        convert_types:
                        - str
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF Name.
              convert_types:
              - int
            ipv4:
              type: dict
              keys:
                bfd:
                  type: bool
                  description: Enable/Disable BFD.
                rp_addresses:
                  type: list
                  items:
                    type: dict
                    keys:
                      address:
                        type: str
                        description: RP Address.
                        required: true
                      groups:
                        type: list
                        items:
                          type: str
                      access_lists:
                        type: list
                        items:
                          type: str
                      priority:
                        type: int
                        min: 0
                        max: 255
                      hashmask:
                        type: int
                        min: 0
                        max: 32
                      override:
                        type: bool
  router_segment_security:
    type: dict
    keys:
      enabled:
        type: bool
      policies:
        type: list
        description: 'Customised application policies.

          Using the Application Traffic Recognition L4 profiles, custom policies can
          be defined. The built-in application ''app-match-all'' can be used to match
          any packets.

          Note that this is stateless, so both the source and destination flows need
          to be considered.'
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy name.
            sequence_numbers:
              type: list
              required: true
              primary_key: sequence
              items:
                type: dict
                keys:
                  sequence:
                    type: int
                    description: Sequence ID.
                    convert_types:
                    - str
                    min: 1
                    max: 1023
                  application:
                    type: str
                    required: true
                    description: The name of the application.
                  action:
                    type: str
                    required: true
                    description: The action to take - note that platform support for
                      the redirect action is limited. The "redirect" action also requires
                      the 'next_hop' to be configured.
                    valid_values:
                    - forward
                    - drop
                    - redirect
                  log:
                    type: bool
                    description: Enable logging - note that platform support is limited.
                  stateless:
                    type: bool
                    description: Take action, regardless of state. Should be set to
                      'true' for MSS-G.
                    default: true
                  next_hop:
                    type: str
                    description: When the action is 'redirect', this indicates the
                      IPv4 next hop to redirect to.
      vrfs:
        type: list
        description: The name of the VRF that the segments and policies are defined
          in.
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            segments:
              type: list
              primary_key: name
              required: true
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Segment name.
                  definition:
                    type: dict
                    keys:
                      interfaces:
                        type: list
                        description: The names of the source interface e.g. Port-Channel1
                          - note that platform support is limited.
                        min_length: 1
                        items:
                          type: str
                      match_lists:
                        type: list
                        description: The set of lists that define the segment. These
                          can be a mix of IPv4 and IPv6 prefix or match lists.
                        max_length: 2
                        min_length: 1
                        primary_key: address_family
                        items:
                          type: dict
                          keys:
                            address_family:
                              type: str
                              required: true
                              description: Indicate which address-family the match
                                list belongs to e.g. ipv4 or ipv6.
                              valid_values:
                              - ipv4
                              - ipv6
                            covered_prefix_list:
                              type: str
                              description: The name of the prefix-list. You can have
                                a maximum of one per address-family. Mutually exclusive
                                to the use of match_list.  If both are configured
                                prefix takes precedence.
                            prefix:
                              type: str
                              description: The name of the match-list. You can have
                                a maximum of one per address-family. Mutually exclusive
                                to the use of covered_prefix_list. If both are configured
                                prefix takes precedence.
                  policies:
                    type: list
                    description: The policies controlling traffic into the segment.
                    primary_key: from
                    items:
                      type: dict
                      keys:
                        from:
                          type: str
                          description: The name of the source segment or 'forwarding-segments'
                            for all segments.
                        policy:
                          type: str
                          description: The name of the policy to apply. The built-in
                            policies are 'policy-forward-all' and 'policy-drop-all'.
                  fallback_policy:
                    type: str
                    description: Only supported on the R3 series platforms, this allows
                      a per-segment default policy to be specified by name.
  router_service_insertion:
    type: dict
    description: Configure network services inserted to data forwarding.
    keys:
      enabled:
        type: bool
      connections:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Connection name.
            ethernet_interface:
              type: dict
              description: 'Outgoing physical interface or subinterface to use for
                the connection.

                If both `ethernet_interface` and `tunnel_interface` are configured,
                `ethernet_interface` will be used.'
              keys:
                name:
                  type: str
                  required: true
                  description: e.g. Ethernet2 or Ethernet2/2.2
                next_hop:
                  type: str
                  required: true
                  description: Next-hop IPv4 address (without mask).
            tunnel_interface:
              type: dict
              description: 'Outgoing tunnel interface(s) to use for this connection.

                If both `ethernet_interface` and `tunnel_interface` are configured,
                `ethernet_interface` will be used.'
              keys:
                primary:
                  type: str
                  description: e.g. Tunnel2
                secondary:
                  type: str
                  description: e.g. Tunnel3
            monitor_connectivity_host:
              type: str
              description: Name of the host defined under `monitor_connectivity.hosts`
                used to derive the health of the connection.
  router_traffic_engineering:
    type: dict
    keys:
      enabled:
        type: bool
      router_id:
        type: dict
        keys:
          ipv4:
            type: str
          ipv6:
            type: str
      segment_routing:
        type: dict
        keys:
          colored_tunnel_rib:
            type: bool
          policy_endpoints:
            type: list
            items:
              type: dict
              keys:
                address:
                  type: str
                  description: IPv4 or IPv6 address.
                colors:
                  type: list
                  primary_key: value
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      value:
                        type: int
                        convert_types:
                        - str
                      binding_sid:
                        type: int
                        convert_types:
                        - str
                      description:
                        type: str
                      name:
                        type: str
                      sbfd_remote_discriminator:
                        type: str
                        description: IPv4 address or 32 bit integer.
                        convert_types:
                        - int
                      path_group:
                        type: list
                        items:
                          type: dict
                          keys:
                            preference:
                              type: int
                              convert_types:
                              - str
                            explicit_null:
                              type: str
                              valid_values:
                              - ipv4
                              - ipv6
                              - ipv4 ipv6
                              - none
                            segment_list:
                              type: list
                              items:
                                type: dict
                                keys:
                                  label_stack:
                                    type: str
                                    convert_types:
                                    - int
                                    description: 'Label Stack as string.

                                      Example: "100 2000 30"

                                      '
                                  weight:
                                    type: int
                                    convert_types:
                                    - str
                                  index:
                                    type: int
                                    convert_types:
                                    - str
  service_routing_configuration_bgp:
    type: dict
    keys:
      no_equals_default:
        type: bool
  service_routing_protocols_model:
    type: str
    valid_values:
    - multi-agent
    - ribd
  service_unsupported_transceiver:
    type: dict
    keys:
      license_name:
        type: str
      license_key:
        type: str
  sflow:
    type: dict
    keys:
      sample:
        type: int
        convert_types:
        - str
      sample_input_subinterface:
        type: bool
      sample_output_subinterface:
        type: bool
      dangerous:
        type: bool
      polling_interval:
        type: int
        convert_types:
        - str
        description: Polling interval in seconds.
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              convert_types:
              - int
            destinations:
              type: list
              primary_key: destination
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  destination:
                    type: str
                    description: Sflow Destination IP Address.
                  port:
                    type: int
                    description: Port Number
                    convert_types:
                    - str
            source:
              type: str
              description: 'Source IP Address.

                "source" and "source_interface" are mutually exclusive. If both are
                defined, "source_interface" takes precedence.

                '
            source_interface:
              type: str
              description: Source Interface.
      destinations:
        type: list
        primary_key: destination
        convert_types:
        - dict
        items:
          type: dict
          keys:
            destination:
              type: str
              description: Sflow Destination IP Address.
            port:
              type: int
              description: Port Number.
              convert_types:
              - str
      source:
        type: str
        description: 'Source IP Address.

          "source" and "source_interface" are mutually exclusive. If both are defined,
          "source_interface" takes precedence.

          '
      source_interface:
        type: str
        description: Source Interface.
      extensions:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Extension Name.
            enabled:
              type: bool
              description: Enable or Disable Extension.
              required: true
      interface:
        type: dict
        keys:
          disable:
            type: dict
            keys:
              default:
                type: bool
          egress:
            type: dict
            keys:
              enable_default:
                type: bool
                description: 'Enable egress sFlow by default.

                  '
              unmodified:
                type: bool
                description: 'Enable egress sFlow unmodified.

                  Platform dependent feature.

                  '
      run:
        type: bool
      hardware_acceleration:
        type: dict
        keys:
          enabled:
            type: bool
          sample:
            type: int
            convert_types:
            - str
          modules:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                enabled:
                  type: bool
                  default: true
  snmp_server:
    type: dict
    description: SNMP settings.
    keys:
      engine_ids:
        type: dict
        keys:
          local:
            type: str
            convert_types:
            - int
            description: 'Engine ID in hexadecimal.

              '
          remotes:
            type: list
            items:
              type: dict
              keys:
                id:
                  type: str
                  convert_types:
                  - int
                  description: 'Remote engine ID in hexadecimal.

                    '
                address:
                  type: str
                  description: 'Hostname or IP of remote engine.

                    '
                udp_port:
                  type: int
                  convert_types:
                  - str
      contact:
        type: str
        description: SNMP contact.
      location:
        type: str
        description: SNMP location.
      communities:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Community name.
            access:
              type: str
              valid_values:
              - ro
              - rw
            access_list_ipv4:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv4 access list name.
            access_list_ipv6:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv6 access list name.
            view:
              type: str
      ipv4_acls:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IPv4 access list name.
            vrf:
              type: str
              convert_types:
              - int
      ipv6_acls:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IPv6 access list name.
            vrf:
              type: str
              convert_types:
              - int
      local_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Interface name.
            vrf:
              type: str
              convert_types:
              - int
      views:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: SNMP view name.
            mib_family_name:
              type: str
            included:
              type: bool
            MIB_family_name:
              deprecation:
                warning: true
                remove_in_version: 5.0.0
                new_key: mib_family_name
              type: str
      groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Group name.
            version:
              type: str
              valid_values:
              - v1
              - v2c
              - v3
            authentication:
              type: str
              valid_values:
              - auth
              - noauth
              - priv
            read:
              type: str
              description: Read view.
            write:
              type: str
              description: Write view.
            notify:
              type: str
              description: Notify view.
      users:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Username.
            group:
              type: str
              description: Group name.
            remote_address:
              type: str
              description: 'Hostname or ip of remote engine.

                The remote_address and udp_port are used for remote users.

                '
            udp_port:
              type: int
              convert_types:
              - str
              description: 'udp_port will not be used if no remote_address is configured.

                '
            version:
              type: str
              valid_values:
              - v1
              - v2c
              - v3
            localized:
              type: str
              convert_types:
              - int
              description: 'Engine ID in hexadecimal for localizing auth and/or priv.

                '
            auth:
              type: str
              description: 'Hash algorithm.

                '
            auth_passphrase:
              type: str
              description: 'Hashed authentication passphrase if localized is used
                else cleartext authentication passphrase.

                '
            priv:
              type: str
              description: 'Encryption algorithm.

                '
            priv_passphrase:
              type: str
              description: 'Hashed privacy passphrase if localized is used else cleartext
                privacy passphrase.

                '
      hosts:
        type: list
        items:
          type: dict
          keys:
            host:
              type: str
              description: Host IP address or name.
            vrf:
              type: str
              convert_types:
              - int
            version:
              type: str
              convert_types:
              - int
              valid_values:
              - '1'
              - 2c
              - '3'
            community:
              type: str
              description: Community name.
            users:
              type: list
              items:
                type: dict
                keys:
                  username:
                    type: str
                  authentication_level:
                    type: str
                    valid_values:
                    - auth
                    - noauth
                    - priv
      traps:
        type: dict
        keys:
          enable:
            type: bool
            default: false
            description: 'Enable or disable all snmp-traps.

              '
          snmp_traps:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: 'Enable or disable specific snmp-traps and their sub_traps.

                    Examples:

                    - "bgp"

                    - "bgp established"

                    '
                enabled:
                  type: bool
                  default: true
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name.
              convert_types:
              - int
            enable:
              type: bool
  spanning_tree:
    type: dict
    keys:
      root_super:
        type: bool
      edge_port:
        type: dict
        keys:
          bpdufilter_default:
            type: bool
          bpduguard_default:
            type: bool
      mode:
        type: str
        valid_values:
        - mstp
        - rstp
        - rapid-pvst
        - none
      bpduguard_rate_limit:
        type: dict
        keys:
          default:
            type: bool
          count:
            type: int
            convert_types:
            - str
            description: Maximum number of BPDUs per timer interval.
      rstp_priority:
        type: int
        convert_types:
        - str
      mst:
        type: dict
        keys:
          pvst_border:
            type: bool
          configuration:
            type: dict
            keys:
              name:
                type: str
              revision:
                type: int
                convert_types:
                - str
                description: 0-65535.
              instances:
                type: list
                primary_key: id
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    id:
                      type: int
                      convert_types:
                      - str
                      description: Instance ID.
                    vlans:
                      type: str
                      convert_types:
                      - int
                      description: '"< vlan_id >, < vlan_id >-< vlan_id >"

                        Example: 15,16,17,18

                        '
      mst_instances:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: str
              convert_types:
              - int
              description: Instance ID.
            priority:
              type: int
              convert_types:
              - str
      no_spanning_tree_vlan:
        type: str
        convert_types:
        - int
        description: '"< vlan_id >, < vlan_id >-< vlan_id >"

          Example: 105,202,505-506

          '
      rapid_pvst_instances:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: str
              convert_types:
              - int
              description: '"< vlan_id >, < vlan_id >-< vlan_id >"

                Example: 105,202,505-506

                '
            priority:
              type: int
              convert_types:
              - str
  standard_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Access-list Name.
          convert_types:
          - int
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                description: Sequence ID.
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string.

                  Example: "deny ip any any"

                  '
  static_routes:
    type: list
    items:
      type: dict
      keys:
        vrf:
          type: str
          description: VRF Name.
          convert_types:
          - int
        destination_address_prefix:
          type: str
          description: IPv4_network/Mask.
        interface:
          type: str
        gateway:
          type: str
          description: IPv4 Address.
        track_bfd:
          type: bool
          description: Track next-hop using BFD.
        distance:
          type: int
          convert_types:
          - str
          min: 1
          max: 255
        tag:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        name:
          type: str
          description: Description.
        metric:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
  stun:
    type: dict
    description: STUN configuration.
    keys:
      client:
        type: dict
        description: STUN client settings.
        keys:
          server_profiles:
            type: list
            description: List of server profiles for the client.
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                ip_address:
                  type: str
                ssl_profile:
                  type: str
                  description: SSL profile name.
                port:
                  type: int
                  description: Destination port for the request STUN server (default
                    - 3478).
                  min: 1
                  max: 65535
                  convert_types:
                  - str
      server:
        type: dict
        description: STUN server settings.
        keys:
          local_interface:
            type: str
            deprecation:
              warning: true
              new_key: local_interfaces
              remove_in_version: v5.0.0
          local_interfaces:
            type: list
            min_length: 1
            items:
              type: str
          bindings_timeout:
            type: int
            description: Timeout for bindings stored on STUN server in seconds.
            convert_types:
            - str
            min: 10
            max: 7200
          ssl_profile:
            type: str
            description: SSL profile name.
          ssl_connection_lifetime:
            type: dict
            description: 'SSL connection lifetime in minutes or hours.

              If both are specified, minutes is given higher precedence.'
            keys:
              minutes:
                type: int
                description: SSL connection lifetime in minutes (default - 120).
                convert_types:
                - str
                min: 1
                max: 1440
              hours:
                type: int
                description: SSL connection lifetime in hours (default - 2).
                convert_types:
                - str
                min: 1
                max: 24
          port:
            type: int
            description: Listening port for STUN server (default - 3478).
            min: 1
            max: 65535
            convert_types:
            - str
  switchport_default:
    type: dict
    keys:
      mode:
        type: str
        valid_values:
        - routed
        - access
      phone:
        type: dict
        keys:
          cos:
            type: int
            convert_types:
            - str
            min: 0
            max: 7
          trunk:
            type: str
            valid_values:
            - tagged
            - untagged
          vlan:
            type: int
            description: VLAN ID.
            convert_types:
            - str
            min: 1
            max: 4094
  switchport_port_security:
    type: dict
    keys:
      mac_address:
        type: dict
        keys:
          aging:
            type: bool
          moveable:
            type: bool
      persistence_disabled:
        type: bool
      violation_protect_chip_based:
        type: bool
  system:
    type: dict
    keys:
      control_plane:
        type: dict
        keys:
          tcp_mss:
            type: dict
            keys:
              ipv4:
                type: int
                description: Segment size.
              ipv6:
                type: int
                description: Segment size.
          ipv4_access_groups:
            type: list
            primary_key: acl_name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                acl_name:
                  type: str
                vrf:
                  type: str
                  convert_types:
                  - int
          ipv6_access_groups:
            type: list
            primary_key: acl_name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                acl_name:
                  type: str
                vrf:
                  type: str
                  convert_types:
                  - int
      l1:
        type: dict
        keys:
          unsupported_speed_action:
            type: str
            valid_values:
            - error
            - warn
          unsupported_error_correction_action:
            type: str
            valid_values:
            - error
            - warn
  tacacs_servers:
    type: dict
    keys:
      timeout:
        type: int
        convert_types:
        - str
        description: Timeout in seconds.
        min: 1
        max: 1000
      hosts:
        type: list
        items:
          type: dict
          keys:
            host:
              type: str
              description: Host IP address or name.
            vrf:
              type: str
              convert_types:
              - int
            key:
              type: str
              description: Encrypted key.
            key_type:
              type: str
              convert_types:
              - int
              valid_values:
              - '0'
              - '7'
              - 8a
              default: '7'
            single_connection:
              type: bool
            timeout:
              type: int
              convert_types:
              - str
              description: Timeout in seconds.
              min: 1
              max: 1000
      policy_unknown_mandatory_attribute_ignore:
        type: bool
  tap_aggregation:
    type: dict
    keys:
      mode:
        type: dict
        keys:
          exclusive:
            type: dict
            keys:
              enabled:
                type: bool
              profile:
                description: Profile Name.
                type: str
              no_errdisable:
                type: list
                items:
                  type: str
                  description: Interface name e.g Ethernet1, Port-Channel1.
      encapsulation_dot1br_strip:
        type: bool
      encapsulation_vn_tag_strip:
        type: bool
      protocol_lldp_trap:
        type: bool
      truncation_size:
        type: int
        description: 'Allowed truncation_size values vary depending on the platform.

          '
      mac:
        type: dict
        keys:
          timestamp:
            type: dict
            description: 'mac.timestamp.replace_source_mac and mac.timestamp.header.format
              are mutually exclsuive. If both are defined, replace_source_mac takes
              precedence.

              '
            keys:
              replace_source_mac:
                type: bool
              header:
                type: dict
                keys:
                  format:
                    type: str
                    valid_values:
                    - 48-bit
                    - 64-bit
                  eth_type:
                    description: EtherType.
                    type: int
                    convert_types:
                    - str
          fcs_append:
            type: bool
            description: 'mac.fcs_append and mac.fcs_error are mutually exclusive.
              If both are defined, mac.fcs_append takes precedence.

              '
          fcs_error:
            type: str
            valid_values:
            - correct
            - discard
            - pass-through
  tcam_profile:
    type: dict
    display_name: Hardware TCAM Profiles
    keys:
      system:
        type: str
        description: 'TCAM profile name to activate.

          '
      profiles:
        type: list
        secondary_key: config
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Tcam-Profile Name.
            config:
              type: str
              required: false
              description: 'TCAM Profile Config. Since these can be very long, it
                is often a good idea to import the config from a file.

                Example: "{{ lookup(''file'', ''TCAM_TRAFFIC_POLICY.conf'') }}"

                '
            source:
              type: str
              required: false
              description: 'TCAM profile local source path. Used to read the TCAM
                profile from a local path existing on the device.

                '
  terminal:
    type: dict
    display_name: Terminal Settings
    keys:
      length:
        type: int
        min: 0
        max: 32767
      width:
        type: int
        min: 10
        max: 32767
  trackers:
    type: list
    primary_key: name
    items:
      type: dict
      keys:
        name:
          type: str
          description: Name of tracker object.
        interface:
          type: str
          description: Name of tracked interface.
          required: true
        tracked_property:
          type: str
          default: line-protocol
          description: Property to track.
  traffic_policies:
    type: dict
    keys:
      options:
        type: dict
        keys:
          counter_per_interface:
            type: bool
      field_sets:
        type: dict
        keys:
          ipv4:
            type: list
            secondary_key: prefixes
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv4 Prefix Field Set Name.
                prefixes:
                  type: list
                  items:
                    type: str
                    description: IPv4 Prefix.
          ipv6:
            type: list
            secondary_key: prefixes
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv6 Prefix Field Set Name.
                prefixes:
                  type: list
                  items:
                    type: str
                    description: IPv6 Prefix.
          ports:
            type: list
            primary_key: name
            secondary_key: port_range
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: L4 Port Field Set Name.
                port_range:
                  type: str
                  description: 'Example: ''10,20,80,440-450'''
      policies:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Traffic Policy Name.
            matches:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Traffic Policy Item.
                  type:
                    type: str
                    valid_values:
                    - ipv4
                    - ipv6
                  source:
                    type: dict
                    keys:
                      prefixes:
                        type: list
                        items:
                          type: str
                          description: IP address or prefix.
                      prefix_lists:
                        type: list
                        description: Field-set prefix lists.
                        items:
                          type: str
                  destination:
                    type: dict
                    keys:
                      prefixes:
                        type: list
                        items:
                          type: str
                          description: IP address or prefix.
                      prefix_lists:
                        type: list
                        description: Field-set prefix lists.
                        items:
                          type: str
                  ttl:
                    type: str
                    description: TTL range.
                  fragment:
                    type: dict
                    description: 'The ''fragment'' command is not supported when ''source
                      port''

                      or ''destination port'' command is configured.

                      '
                    keys:
                      offset:
                        type: str
                        description: Fragment offset range.
                  protocols:
                    type: list
                    primary_key: protocol
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        protocol:
                          type: str
                        src_port:
                          type: str
                          description: Port range.
                        dst_port:
                          type: str
                          description: Port range.
                        src_field:
                          type: str
                          description: L4 port range field set.
                        dst_field:
                          type: str
                          description: L4 port range field set.
                        flags:
                          type: list
                          items:
                            type: str
                            valid_values:
                            - established
                            - initial
                        icmp_type:
                          type: list
                          items:
                            type: str
                  actions:
                    type: dict
                    keys:
                      dscp:
                        type: int
                        convert_types:
                        - str
                      traffic_class:
                        type: int
                        convert_types:
                        - str
                        description: Traffic class ID.
                      count:
                        type: str
                        description: Counter name.
                      drop:
                        type: bool
                      log:
                        type: bool
                        description: Only supported when action is set to drop.
            default_actions:
              type: dict
              keys:
                ipv4:
                  type: dict
                  keys:
                    dscp:
                      type: int
                      convert_types:
                      - str
                    traffic_class:
                      type: int
                      convert_types:
                      - str
                      description: Traffic class ID.
                    count:
                      type: str
                      description: Counter name.
                    drop:
                      type: bool
                    log:
                      type: bool
                      description: Only supported when action is set to drop.
                ipv6:
                  type: dict
                  keys:
                    dscp:
                      type: int
                      convert_types:
                      - str
                    traffic_class:
                      type: int
                      convert_types:
                      - str
                      description: Traffic class ID.
                    count:
                      type: str
                      description: Counter name.
                    drop:
                      type: bool
                    log:
                      type: bool
                      description: Only supported when action is set to drop.
  transceiver_qsfp_default_mode_4x10:
    type: bool
    default: true
    description: 'On all front panel ports which support this feature, the following
      global configuration command changes the QSFP mode from 40G to 4x10G (default).
      When set to false the command reverts the default QSFP mode back to 40G.

      '
  tunnel_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Tunnel Interface Name.
        description:
          type: str
        shutdown:
          type: bool
        mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
        vrf:
          type: str
          description: VRF Name.
          convert_types:
          - int
        ip_address:
          type: str
          format: ipv4_cidr
          description: IPv4_address/Mask.
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          format: ipv6_cidr
          description: IPv6_address/Mask.
        access_group_in:
          description: IPv4 ACL Name for ingress.
          type: str
        access_group_out:
          description: IPv4 ACL Name for egress.
          type: str
        ipv6_access_group_in:
          description: IPv6 ACL Name for ingress.
          type: str
        ipv6_access_group_out:
          description: IPv6 ACL Name for egress.
          type: str
        tcp_mss_ceiling:
          type: dict
          keys:
            ipv4:
              type: int
              description: Segment Size for IPv4.
              min: 64
              max: 65495
              convert_types:
              - str
            ipv6:
              type: int
              description: Segment Size for IPv6.
              min: 64
              max: 65475
              convert_types:
              - str
            direction:
              type: str
              valid_values:
              - ingress
              - egress
              description: 'Optional direction (''ingress'', ''egress'')  for tcp
                mss ceiling.

                '
        tunnel_mode:
          type: str
          valid_values:
          - gre
          - ipsec
          description: 'Tunnel encapsulation method.

            `gre`: Generic route encapsulation protocol,

            `ipsec`: IPsec-over-IP encapsulation.'
        source_interface:
          type: str
          description: Tunnel Source Interface Name.
        destination:
          type: str
          description: IPv4 or IPv6 Address Tunnel Destination.
        path_mtu_discovery:
          type: bool
          description: Enable Path MTU Discovery On Tunnel.
        ipsec_profile:
          type: str
          description: 'Used only when `tunnel_mode` is set to `ipsec`.

            It must target a defined IPsec profile.'
        nat_profile:
          type: str
          description: NAT interface profile.
        eos_cli:
          type: str
          description: 'Multiline String with EOS CLI rendered directly on the Tunnel
            interface in the final EOS configuration.

            '
  virtual_source_nat_vrfs:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: VRF Name.
          convert_types:
          - int
        ip_address:
          type: str
          description: IPv4 Address.
  vlan_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: VLAN interface name like "Vlan123".
        description:
          type: str
        logging:
          type: dict
          keys:
            event:
              type: dict
              keys:
                link_status:
                  type: bool
        shutdown:
          type: bool
        vrf:
          type: str
          description: VRF name.
          convert_types:
          - int
        arp_aging_timeout:
          type: int
          convert_types:
          - str
          description: In seconds.
          min: 1
          max: 65535
        arp_cache_dynamic_capacity:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        arp_gratuitous_accept:
          type: bool
        arp_monitor_mac_address:
          type: bool
        ip_proxy_arp:
          type: bool
        ip_directed_broadcast:
          type: bool
        ip_address:
          type: str
          description: IPv4_address/Mask.
        ip_address_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask.
        ip_virtual_router_addresses:
          type: list
          items:
            type: str
            description: IPv4 address or IPv4_address/Mask.
        ip_address_virtual:
          type: str
          description: IPv4_address/Mask.
        ip_address_virtual_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask.
        ip_verify_unicast_source_reachable_via:
          type: str
          valid_values:
          - any
          - rx
        ip_igmp:
          type: bool
        ip_igmp_version:
          type: int
          convert_types:
          - str
          min: 1
          max: 3
        ip_igmp_host_proxy:
          type: dict
          keys:
            enabled:
              type: bool
            groups:
              type: list
              primary_key: group
              items:
                type: dict
                keys:
                  group:
                    type: str
                    description: Multicast Address.
                  exclude:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
                  include:
                    type: list
                    primary_key: source
                    description: The same source must not be present both in `exclude`
                      and `include` list.
                    items:
                      type: dict
                      keys:
                        source:
                          type: str
            report_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 31744
              description: Time interval between unsolicited reports.
            access_lists:
              type: list
              primary_key: name
              description: Non-standard Access List name.
              items:
                type: dict
                keys:
                  name:
                    type: str
            version:
              type: int
              convert_types:
              - str
              min: 1
              max: 3
              description: IGMP version on IGMP host-proxy interface.
        ip_helpers:
          type: list
          description: List of DHCP servers.
          convert_types:
          - dict
          primary_key: ip_helper
          items:
            type: dict
            keys:
              ip_helper:
                type: str
                description: IP address or hostname of DHCP server.
              source_interface:
                type: str
                description: Interface used as source for forwarded DHCP packets.
              vrf:
                type: str
                description: VRF where DHCP server can be reached.
                convert_types:
                - int
        ip_dhcp_relay_all_subnets:
          type: bool
          description: Allow forwarding requests with secondary IP addresses in the
            gateway address "giaddr" field.
        ip_nat:
          type: dict
          $ref: eos_cli_config_gen#/$defs/interface_ip_nat
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask.
        ipv6_address_virtual:
          type: str
          description: 'IPv6_address/Mask.

            If both "ipv6_address_virtual" and "ipv6_address_virtuals" are set, all
            addresses will be configured.

            '
          deprecation:
            warning: true
            new_key: ipv6_address_virtuals
            remove_in_version: 5.0.0
        ipv6_address_virtuals:
          type: list
          description: The new "ipv6_address_virtuals" key support multiple virtual
            ipv6 addresses.
          items:
            type: str
            description: IPv6_address/Mask.
        ipv6_address_link_local:
          type: str
          description: IPv6_address/Mask.
        ipv6_virtual_router_address:
          type: str
          description: '"ipv6_virtual_router_address" should not be mixed with

            the new "ipv6_virtual_router_addresses" key below to avoid conflicts.

            '
          deprecation:
            warning: true
            remove_in_version: 5.0.0
            new_key: ipv6_virtual_router_addresses
        ipv6_virtual_router_addresses:
          type: list
          description: Improved "VARPv6" data model to support multiple VARPv6 addresses.
          items:
            type: str
            description: IPv6 address or IPv6_address/Mask.
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_other_config_flag:
          type: bool
          description: Set the "other stateful configuration" flag in IPv6 router
            advertisements.
        ipv6_nd_cache:
          type: dict
          description: IPv6 neighbor cache options.
          keys:
            dynamic_capacity:
              type: int
              description: Capacity of dynamic cache entries.
              convert_types:
              - str
              min: 0
              max: 4294967295
            expire:
              type: int
              description: Cache entries expirery in seconds.
              convert_types:
              - str
              min: 1
              max: 65535
            refresh_always:
              type: bool
              description: Force refresh on cache expiry.
        ipv6_nd_prefixes:
          type: list
          convert_types:
          - dict
          primary_key: ipv6_prefix
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
                description: IPv6_address/Mask.
              valid_lifetime:
                type: str
                description: In seconds <0-4294967295> or infinite.
                convert_types:
                - int
              preferred_lifetime:
                type: str
                description: In seconds <0-4294967295> or infinite.
                convert_types:
                - int
              no_autoconfig_flag:
                type: bool
        ipv6_dhcp_relay_destinations:
          type: list
          primary_key: address
          items:
            type: dict
            keys:
              address:
                type: str
                description: DHCP server's IPv6 address.
              vrf:
                type: str
                convert_types:
                - int
              local_interface:
                type: str
                description: Local interface to communicate with DHCP server - mutually
                  exclusive to source_address.
              source_address:
                type: str
                description: Source IPv6 address to communicate with DHCP server -
                  mutually exclusive to local_interface.
              link_address:
                type: str
                description: Override the default link address specified in the relayed
                  DHCP packet.
        ipv6_dhcp_relay_all_subnets:
          type: bool
          description: Allow forwarding requests with additional IPv6 addresses in
            the gateway address "giaddr" field.
        access_group_in:
          type: str
          description: IPv4 access-list name.
          convert_types:
          - int
        access_group_out:
          type: str
          description: IPv4 access-list name.
          convert_types:
          - int
        ipv6_access_group_in:
          type: str
          description: IPv6 access-list name.
          convert_types:
          - int
        ipv6_access_group_out:
          type: str
          description: IPv6 access-list name.
          convert_types:
          - int
        multicast:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                boundaries:
                  type: list
                  description: Boundaries can be either 1 ACL or a list of multicast
                    IP address_range(s)/prefix but not combination of both.
                  primary_key: boundary
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: IPv4 access-list name or IPv4 multicast group
                          prefix with mask.
                        convert_types:
                        - int
                      out:
                        type: bool
                source_route_export:
                  type: dict
                  keys:
                    enabled:
                      type: bool
                      required: true
                    administrative_distance:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 255
                static:
                  type: bool
            ipv6:
              type: dict
              keys:
                boundaries:
                  type: list
                  description: Boundaries can be either 1 ACL or a list of multicast
                    IP address_range(s)/prefix but not combination of both.
                  primary_key: boundary
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: IPv6 access-list name or IPv6 multicast group
                          prefix with mask.
                        convert_types:
                        - int
                source_route_export:
                  type: dict
                  keys:
                    enabled:
                      type: bool
                      required: true
                    administrative_distance:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 255
                static:
                  type: bool
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password used for simple authentication.
        ospf_message_digest_keys:
          type: list
          description: Keys used for message-digest authentication.
          convert_types:
          - dict
          primary_key: id
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password.
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                border_router:
                  type: bool
                  description: Configure PIM border router. EOS default is false.
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
                local_interface:
                  type: str
                bfd:
                  type: bool
                  description: Set the default for whether Bidirectional Forwarding
                    Detection is enabled for PIM.
                bidirectional:
                  type: bool
                hello:
                  type: dict
                  keys:
                    count:
                      type: str
                      convert_types:
                      - int
                      - float
                      description: Number of missed hellos after which the neighbor
                        expires. Range <1.5-65535>.
                    interval:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 65535
                      description: PIM hello interval in seconds.
        isis_enable:
          type: str
          description: ISIS instance name.
        isis_bfd:
          type: bool
          description: Enable BFD for ISIS.
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        mtu:
          type: int
          convert_types:
          - str
        no_autostate:
          type: bool
        vrrp_ids:
          type: list
          description: Improved "vrrp" data model to support multiple VRRP IDs.
          primary_key: id
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: VRID.
              priority_level:
                type: int
                convert_types:
                - str
                description: Instance priority.
                min: 1
                max: 254
              advertisement:
                type: dict
                keys:
                  interval:
                    type: int
                    convert_types:
                    - str
                    description: Interval in seconds.
                    min: 1
                    max: 255
              preempt:
                type: dict
                keys:
                  enabled:
                    type: bool
                    required: true
                  delay:
                    type: dict
                    keys:
                      minimum:
                        type: int
                        convert_types:
                        - str
                        description: Minimum preempt delay in seconds.
                        min: 0
                        max: 3600
                      reload:
                        type: int
                        convert_types:
                        - str
                        description: Reload preempt delay in seconds.
                        min: 0
                        max: 3600
              timers:
                type: dict
                keys:
                  delay:
                    type: dict
                    keys:
                      reload:
                        type: int
                        description: Delay after reload in seconds.
                        convert_types:
                        - str
                        min: 0
                        max: 3600
              tracked_object:
                type: list
                primary_key: name
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Tracked object name.
                    decrement:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 254
                      description: Decrement VRRP priority by 1-254.
                    shutdown:
                      type: bool
              ipv4:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv4 address.
                  version:
                    type: int
                    convert_types:
                    - str
                    valid_values:
                    - 2
                    - 3
              ipv6:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv6 address.
        vrrp:
          type: dict
          description: '"vrrp" should not be mixed with the new "vrrp_ids" key above
            to avoid conflicts.

            '
          deprecation:
            warning: true
            remove_in_version: 5.0.0
            new_key: vrrp_ids
          keys:
            virtual_router:
              type: str
              description: Virtual Router ID.
            priority:
              type: int
              convert_types:
              - str
              description: Instance priority.
            advertisement_interval:
              type: int
              convert_types:
              - str
            preempt_delay_minimum:
              type: int
              convert_types:
              - str
            ipv4:
              type: str
              description: Virtual IPv4 address.
            ipv6:
              type: str
              description: Virtual IPv6 address.
        ip_attached_host_route_export:
          type: dict
          keys:
            enabled:
              type: bool
              required: true
            distance:
              type: int
              convert_types:
              - str
              min: 1
              max: 255
        ipv6_attached_host_route_export:
          type: dict
          keys:
            enabled:
              type: bool
              required: true
            distance:
              type: int
              convert_types:
              - str
              min: 1
              max: 255
              description: Administrative distance for generated routes.
            prefix_length:
              type: int
              convert_types:
              - str
              min: 0
              max: 128
              description: Prefix length for generated routes.
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              convert_types:
              - str
              description: Rate in milliseconds.
            min_rx:
              type: int
              convert_types:
              - str
              description: Minimum RX hold time in milliseconds.
            multiplier:
              type: int
              convert_types:
              - str
              min: 3
              max: 50
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Name of policy-map used for policy based routing.
        pvlan_mapping:
          type: str
          description: List of VLANs as string.
        tenant:
          type: str
          description: Key only used for documentation or validation purposes.
        tags:
          type: list
          items:
            type: str
          description: Key only used for documentation or validation purposes.
        type:
          type: str
          description: Key only used for documentation or validation purposes.
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the VLAN interface in
            the final EOS configuration.
  vlan_internal_order:
    type: dict
    keys:
      allocation:
        type: str
        required: true
        valid_values:
        - ascending
        - descending
      range:
        type: dict
        required: true
        keys:
          beginning:
            type: int
            min: 2
            max: 4094
            required: true
            description: First VLAN ID.
            convert_types:
            - str
          ending:
            type: int
            min: 2
            max: 4094
            required: true
            description: Last VLAN ID.
            convert_types:
            - str
  vlans:
    type: list
    primary_key: id
    convert_types:
    - dict
    items:
      type: dict
      keys:
        id:
          type: int
          convert_types:
          - str
          description: VLAN ID.
        name:
          type: str
          description: VLAN Name.
        state:
          type: str
          valid_values:
          - active
          - suspend
        trunk_groups:
          type: list
          items:
            type: str
            description: Trunk Group Name.
        private_vlan:
          type: dict
          keys:
            type:
              type: str
              valid_values:
              - community
              - isolated
            primary_vlan:
              type: int
              convert_types:
              - str
              description: Primary VLAN ID.
        tenant:
          type: str
          description: Key only used for documentation or validation purposes.
  vmtracer_sessions:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Vmtracer Session Name.
        url:
          type: str
        username:
          type: str
        password:
          type: str
          description: Type 7 Password Hash.
        autovlan_disable:
          type: bool
        source_interface:
          type: str
  vrfs:
    type: list
    primary_key: name
    description: 'These keys are ignored if the name of the vrf is ''default''.

      '
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: VRF Name.
          convert_types:
          - int
        description:
          type: str
        ip_routing:
          type: bool
        ipv6_routing:
          type: bool
        ip_routing_ipv6_interfaces:
          type: bool
        tenant:
          type: str
          description: Key only used for documentation or validation purposes.
  vxlan_interface:
    type: dict
    keys:
      Vxlan1:
        type: dict
        keys:
          description:
            type: str
          vxlan:
            type: dict
            keys:
              source_interface:
                type: str
                description: Source Interface Name.
              multicast:
                type: dict
                keys:
                  headend_replication:
                    type: bool
              controller_client:
                type: dict
                description: Client to CVX Controllers.
                keys:
                  enabled:
                    type: bool
              mlag_source_interface:
                type: str
              udp_port:
                type: int
                convert_types:
                - str
              vtep_to_vtep_bridging:
                type: bool
                description: Enable bridging between different VTEPs in vxlan overlay.
              virtual_router_encapsulation_mac_address:
                type: str
                description: '"mlag-system-id" or ethernet_address (H.H.H).

                  '
              bfd_vtep_evpn:
                type: dict
                keys:
                  interval:
                    type: int
                    convert_types:
                    - str
                  min_rx:
                    type: int
                    convert_types:
                    - str
                  multiplier:
                    type: int
                    convert_types:
                    - str
                    min: 3
                    max: 50
                  prefix_list:
                    type: str
              qos:
                type: dict
                description: 'For the Traffic Class to be derived based on the outer
                  DSCP field of the incoming VxLan packet, the core ports must be
                  in "DSCP Trust" mode.

                  !!!Warning, only few hardware types with software version >= 4.26.0
                  support the below knobs to configure Vxlan DSCP mapping.

                  '
                keys:
                  dscp_propagation_encapsulation:
                    type: bool
                  ecn_propagation:
                    type: bool
                    description: 'Enable copying the ECN marking to/from encapsulated
                      packets.

                      '
                  map_dscp_to_traffic_class_decapsulation:
                    type: bool
              vlans:
                type: list
                primary_key: id
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    id:
                      type: int
                      convert_types:
                      - str
                      description: VLAN ID.
                    vni:
                      type: int
                      convert_types:
                      - str
                    multicast_group:
                      type: str
                      description: IP Multicast Group Address.
                    flood_vteps:
                      type: list
                      items:
                        type: str
                        description: Remote VTEP IP Address.
              vrfs:
                type: list
                primary_key: name
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: VRF Name.
                      convert_types:
                      - int
                    vni:
                      type: int
                      convert_types:
                      - str
                    multicast_group:
                      type: str
                      description: IP Multicast Group Address.
              flood_vteps:
                type: list
                items:
                  type: str
                  description: Remote VTEP IP Address.
              flood_vtep_learned_data_plane:
                type: bool
          eos_cli:
            type: str
            description: 'Multiline String with EOS CLI rendered directly on the Vxlan
              interface in the final EOS configuration.

              '
$defs:
  application_traffic_recognition_application:
    type: dict
    keys:
      protocols:
        type: list
        description: 'List of protocols to consider for this application.

          To use port field-sets (source, destination or both), the list

          must contain only one or two protocols, either `tcp` or `udp`.

          When using both protocols, one line is rendered for each in the configuration,

          hence the field-sets must have the same value for `tcp_src_port_set_name`
          and

          `udp_src_port_set_name` and for `tcp_dest_port_set_name` and `udp_dest_port_set_name`

          if set in order to generate valid configuration in EOS.'
        items:
          type: str
          valid_values:
          - ahp
          - esp
          - icmp
          - igmp
          - ospf
          - pim
          - rsvp
          - tcp
          - udp
          - vrrp
      protocol_ranges:
        type: list
        description: 'Accept protocol value(s) or range(s).

          Protocol values can be between 1 and 255.'
        items:
          type: str
          convert_types:
          - int
      udp_src_port_set_name:
        type: str
        description: 'Name of field set for UDP source ports.

          When the `protocols` list contain both `tcp` and `udp`, this key value

          must be the same as `tcp_src_port_set_name`.'
      tcp_src_port_set_name:
        type: str
        description: 'Name of field set for TCP source ports.

          When the `protocols` list contain both `tcp` and `udp`, this key value

          must be the same as `udp_src_port_set_name`.'
      udp_dest_port_set_name:
        type: str
        description: 'Name of field set for UDP destination ports.

          When the `protocols` list contain both `tcp` and `udp`, this key value

          must be the same as `tcp_dest_port_set_name`.'
      tcp_dest_port_set_name:
        type: str
        description: 'Name of field set for TCP destination ports.

          When the `protocols` list contain both `tcp` and `udp`, this key value

          must be the same as `udp_dest_port_set_name`.'
  flow_tracking:
    type: dict
    keys:
      trackers:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Tracker Name.
            record_export:
              type: dict
              keys:
                on_inactive_timeout:
                  type: int
                  convert_types:
                  - str
                  min: 3000
                  max: 900000
                  description: Flow record inactive export timeout in milliseconds.
                on_interval:
                  type: int
                  convert_types:
                  - str
                  min: 1000
                  max: 36000000
                  description: Flow record export interval in milliseconds.
            exporters:
              type: list
              primary_key: name
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Exporter Name.
                  collector:
                    type: dict
                    keys:
                      host:
                        type: str
                        description: Collector IPv4 address or IPv6 address or fully
                          qualified domain name.
                      port:
                        type: int
                        description: Collector Port Number.
                        min: 1
                        max: 65535
                        convert_types:
                        - str
                  format:
                    type: dict
                    keys:
                      ipfix_version:
                        type: int
                        convert_types:
                        - str
                  local_interface:
                    type: str
                    description: Local Source Interface.
                  template_interval:
                    type: int
                    convert_types:
                    - str
                    min: 5000
                    max: 3600000
                    description: Template interval in milliseconds.
      shutdown:
        type: bool
        default: false
  interface_ip_nat:
    type: dict
    keys:
      destination:
        type: dict
        keys:
          dynamic:
            type: list
            primary_key: access_list
            items:
              type: dict
              keys:
                access_list:
                  type: str
                comment:
                  type: str
                pool_name:
                  type: str
                  required: true
                priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 4294967295
          static:
            type: list
            $ref: eos_cli_config_gen#/$defs/interface_ip_nat_static
      source:
        type: dict
        keys:
          dynamic:
            type: list
            primary_key: access_list
            items:
              type: dict
              keys:
                access_list:
                  type: str
                comment:
                  type: str
                nat_type:
                  type: str
                  required: true
                  valid_values:
                  - overload
                  - pool
                  - pool-address-only
                  - pool-full-cone
                pool_name:
                  type: str
                  description: 'required if ''nat_type'' is pool, pool-address-only
                    or pool-full-cone.

                    ignored if ''nat_type'' is overload.

                    '
                priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 4294967295
          static:
            type: list
            $ref: eos_cli_config_gen#/$defs/interface_ip_nat_static
  interface_ip_nat_static:
    type: list
    items:
      type: dict
      keys:
        access_list:
          type: str
          description: '''access_list'' and ''group'' are mutual exclusive.'
        comment:
          type: str
        direction:
          type: str
          valid_values:
          - egress
          - ingress
          description: 'Egress or ingress can be the default. This depends on source/destination,
            EOS version, and hardware platform.

            EOS might remove this keyword in the configuration. So, check the configuration
            on targeted HW/SW.

            '
        group:
          type: int
          convert_types:
          - str
          min: 1
          max: 65535
          description: '''access_list'' and ''group'' are mutual exclusive.'
        original_ip:
          type: str
          description: IPv4 address. The combination of `original_ip` and `original_port`
            must be unique.
        original_port:
          type: int
          description: TCP/UDP port. The combination of `original_ip` and `original_port`
            must be unique.
          convert_types:
          - str
          min: 1
          max: 65535
        priority:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        protocol:
          type: str
          valid_values:
          - udp
          - tcp
        translated_ip:
          type: str
          required: true
          description: IPv4 address.
        translated_port:
          type: int
          convert_types:
          - str
          min: 1
          max: 65535
          description: requires 'original_port'.
