Cisco-IOS-XR-um-policymap-classmap-cfg

This module contains a collection of IOS-XR YANG model derived from CLI. Copyright (c) 2013-2021 by Cisco Systems, Inc. All ri...

  • Version: 2021-05-11

    Cisco-IOS-XR-um-policymap-classmap-cfg@2021-05-11


    
      module Cisco-IOS-XR-um-policymap-classmap-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-policymap-classmap-cfg";
    
        prefix um-policymap-classmap-cfg;
    
        import cisco-semver {
          prefix semver;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import Cisco-IOS-XR-types {
          prefix xr2;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "
         Cisco Systems, Inc.
         Customer Service
         
         Postal: 170 W Tasman Drive
         San Jose, CA 95134
         
         Tel: +1 1800 553-NETS
         
         E-mail: cs-yang@cisco.com
        ";
    
        description
          "
         This module contains a collection of IOS-XR YANG model derived from CLI.
         
         Copyright (c) 2013-2021 by Cisco Systems, Inc.
         All rights reserved.
        ";
    
        revision "2021-05-11" {
          description
            "Removed MUST check under policy-map/qos/class for
           not(random-detect-default and random-detect)
           2021-05-05
             Added MUST check under policy-map/qos/class for qos-actions elements for not
           accepting empty policy-map
           2020-10-05
             Changed ipv4/ipv6/ethernet-services under access-group to leaf-lists
           2020-08-24
             Removed some nodes which are not supported via YANG";
        }
    
        revision "2020-01-27" {
          description
            "Added discard-class node under queue-limit";
        }
    
        revision "2019-06-10" {
          description
            "Establish semantic version baseline.";
        }
    
        revision "2019-04-01" {
          description "Initial version";
        }
    
        semver:module-version "2.0.0";
        semver:module-version "1.0.0";
        semver:module-version "1.0.0";
    
        feature pmap-type-qos {
          description "QoS policy-map";
        }
    
        feature pmap-type-pbr {
          description "PBR policy-map";
        }
    
        feature pmap-type-accounting {
          description "Accounting policy-map";
        }
    
        feature pmap-type-redirect {
          description "Redirect policy-map";
        }
    
        feature pmap-type-traffic {
          description "Traffic policy-map";
        }
    
        feature pmap-type-control {
          description
            "Subscriber control policy-map";
        }
    
        feature pmap-type-afmon {
          description
            "Peformance traffic policy-map";
        }
    
        feature cmap-type-qos {
          description "QOS class-map";
        }
    
        feature cmap-type-traffic {
          description "Traffic class-map";
        }
    
        feature match-ipv4-acl {
          description "Match based on ipv4 ACL";
        }
    
        feature match-ipv6-acl {
          description "Match based on ipv6 ACL";
        }
    
        feature match-ethernet-services-acl {
          description
            "Match based on Ethernet Services";
        }
    
        feature match-ipv4-dscp {
          description "Match based on ipv4 DSCP";
        }
    
        feature match-ipv4-prec {
          description
            "Match based on ipv4 precedence";
        }
    
        feature match-ipv6-dscp {
          description "Match based on ipv6 DSCP";
        }
    
        feature match-ipv6-prec {
          description
            "Match based on ipv6 precedence";
        }
    
        feature match-dscp {
          description "Match based on DSCP";
        }
    
        feature match-prec {
          description
            "Match based on precedence";
        }
    
        feature match-proto {
          description "Match based on protocol";
        }
    
        feature match-mpls-exp-top {
          description
            "Match based on mpls experimental topmost";
        }
    
        feature match-cos {
          description "Match based on COS";
        }
    
        feature match-cos-inner {
          description "Match inner based on COS";
        }
    
        feature match-vlan {
          description "Match based on Vlan Ids";
        }
    
        feature match-vlan-inner {
          description
            "Match based on inner Vlan Ids";
        }
    
        feature match-source-port {
          description
            "Match based on source port";
        }
    
        feature match-destination-port {
          description
            "Match based on destination port";
        }
    
        feature match-src-mac {
          description
            "Match based on MAC source address";
        }
    
        feature match-dst-mac {
          description
            "Match based on MAC destination address";
        }
    
        feature match-src-addr-ipv4 {
          description
            "Match based on ipv4 source address";
        }
    
        feature match-dst-addr-ipv4 {
          description
            "Match based on ipv4 destination address";
        }
    
        feature match-src-addr-ipv6 {
          description
            "Match based on ipv6 source address";
        }
    
        feature match-dst-addr-ipv6 {
          description
            "Match based on ipv6 destination address";
        }
    
        feature match-atm {
          description
            "Match based on ATM specific criteria";
        }
    
        feature match-cac {
          description
            "Match based on CAC fields";
        }
    
        feature match-dei {
          description "Match based on DEI bit";
        }
    
        feature match-dei-inner {
          description
            "Match inner based on DEI bit";
        }
    
        feature match-discard-class {
          description
            "Match based on discard class";
        }
    
        feature match-ethertype {
          description "Match based on ethertype";
        }
    
        feature match-flow-key {
          description "Match based on flow keys";
        }
    
        feature match-fragment-type {
          description
            "Match based on fragment type";
        }
    
        feature match-fr-de {
          description
            "Match based on FrameRelay DE bit";
        }
    
        feature match-fr {
          description
            "Match based on frame-relay specific criteria";
        }
    
        feature match-mpls-disp-ipv4-acl {
          description
            "Match based on MPLS Label Disposition IPv4 access list";
        }
    
        feature match-mpls-disp-ipv6-acl {
          description
            "Match based on MPLS Label Disposition IPv6 access list";
        }
    
        feature match-mpls-disp-cmap {
          description
            "Match based on MPLS Label Disposition class-map";
        }
    
        feature match-mpls-exp-imposition {
          description
            "Match based on MPLS experimental imposition label";
        }
    
        feature match-ipv4-packet-length {
          description
            "Match based on IPV4 packet length";
        }
    
        feature match-ipv6-packet-length {
          description
            "Match based on IPV6 packet length";
        }
    
        feature match-authen-status {
          description
            "Match based on authentication status";
        }
    
        feature match-timer {
          description "Match based on timer";
        }
    
        feature match-username {
          description "Match based on user name";
        }
    
        feature match-vpls-known {
          description
            "Match based on VPLS field known";
        }
    
        feature match-vpls-unknown {
          description
            "Match based on VPLS field unknown";
        }
    
        feature match-vpls-control {
          description
            "Match based on VPLS field control";
        }
    
        feature matchnot-ipv4-acl {
          description
            "Not match based on IPV4 access-list";
        }
    
        feature matchnot-ipv6-acl {
          description
            "Not match based on IPV6 access-list";
        }
    
        feature matchnot-es-acl {
          description
            "Not match based on ethernet services access-list";
        }
    
        feature matchnot-cac-local {
          description "Not match based on CAC";
        }
    
        feature matchnot-dei {
          description
            "Not match based on DEI bit";
        }
    
        feature matchnot-authen-status {
          description
            "Not match based on authentication status";
        }
    
        feature matchnot-protocol {
          description
            "Not match based on protocol";
        }
    
        feature matchnot-timer {
          description "Not match based on timer";
        }
    
        feature matchnot-username {
          description
            "Not match based on user name";
        }
    
        feature matchnot-ethertype {
          description
            "Not match based on ethertype";
        }
    
        feature matchnot-fr-de {
          description "Not match based on FR DE";
        }
    
        feature matchnot-fr {
          description
            "Not match based on FrameRelay";
        }
    
        feature matchnot-ipv4-packet-length {
          description
            "Not match based on IPV4 packet length";
        }
    
        feature matchnot-ipv6-packet-length {
          description
            "Not match based on IPV6 packet length";
        }
    
        feature matchnot-vlan {
          description
            "Not match based on Vlan Ids";
        }
    
        feature matchnot-vlan-inner {
          description
            "Not match based on inner Vlan Ids";
        }
    
        feature matchnot-vpls-known {
          description
            "Not match based on VPLS field known";
        }
    
        feature matchnot-vpls-unknown {
          description
            "Not match based on VPLS field unknown";
        }
    
        feature matchnot-vpls-bcast {
          description
            "Not match based on VPLS field broadcast";
        }
    
        feature matchnot-vpls-control {
          description
            "Not match based on VPLS field control";
        }
    
        feature matchnot-vpls-mcast {
          description
            "Not match based on VPLS field multicast";
        }
    
        feature matchnot-flow-tag {
          description
            "Not match based on flow-tag";
        }
    
        feature matchnot-mac-address {
          description
            "Not match based on MAC address";
        }
    
        feature matchnot-mpls-disp-ipv4-acl {
          description
            "Not match based on MPLS Label Disposition IPv4 access list";
        }
    
        feature matchnot-mpls-disp-ipv6-acl {
          description
            "Not match based on MPLS Label Disposition IPv6 access list";
        }
    
        feature action-compress-header-ip {
          description
            "IP header compression action";
        }
    
        feature action-encap-sequence {
          description
            "Encapsulation sequence action";
        }
    
        feature action-authenticate {
          description
            "Authentication related action";
        }
    
        feature action-authorize {
          description
            "Authorization related action";
        }
    
        feature action-disconnect {
          description "Disconnect session";
        }
    
        feature action-monitor {
          description "Monitor session";
        }
    
        feature action-set-timer {
          description
            "Set a timer to execute a rule on its expiry";
        }
    
        feature action-stop-timer {
          description
            "Disable timer before it expires";
        }
    
        feature action-http-redirect {
          description "HTTP redirect action";
        }
    
        feature action-http-enrichment {
          description "HTTP enrichment action";
        }
    
        feature action-redirect-nexthop {
          description
            "PBF redirect nexthop action";
        }
    
        feature action-redirect-rt {
          description
            "Forward to specific route-target";
        }
    
        feature action-service-function {
          description
            "NSH service function action";
        }
    
        feature action-set-dst-address {
          description "Set destination address";
        }
    
        feature action-set-df {
          description "Set DF bit";
        }
    
        feature action-set-fwd-class {
          description "Set forward class";
        }
    
        feature action-set-src-address {
          description "Set source address";
        }
    
        feature action-transmit {
          description
            "Forward packet to the original destination";
        }
    
        feature action-decap-gre {
          description "Decapsulate GRE packet";
        }
    
        feature action-react {
          description
            "Generate alert on specific event";
        }
    
        feature action-react-snmp {
          description "Report via snmp";
        }
    
        feature action-react-alarm {
          description "Alarms";
        }
    
        feature action-react-grouped-alarm {
          description "Grouped alarms";
        }
    
        feature action-cac {
          description
            "Call admission control action";
        }
    
        feature action-bandwidth {
          description "Bandwidth";
        }
    
        feature action-service-fragment {
          description
            "Refer to an existing service fragment";
        }
    
        feature action-pfc {
          description "PFC feature";
        }
    
        feature action-police-peak-burst {
          description "Excess burst size";
        }
    
        feature action-police-conform-color {
          description
            "Conform color class for color aware policing";
        }
    
        feature action-police-exceed-color {
          description
            "Exceed color class for color aware policing";
        }
    
        feature action-police-coupled {
          description "Coupled policing";
        }
    
        feature action-police-set-fr-de {
          description
            "Set frame relay discard-eligible bit";
        }
    
        feature action-set-atm-clp {
          description
            "Set atm cell-loss-priority bit";
        }
    
        feature action-set-traffic-class {
          description
            "Set the Traffic Class identifiers on IPv4 or MPLS packets";
        }
    
        feature action-shape-burst {
          description "Excess burst size";
        }
    
        typedef trigger-value {
          type string {
            pattern
              "-{0,1}[0-9]+(\\\\.[0-9]+){0,1}";
          }
          description "Limit as a number";
        }
    
        typedef event-type {
          type enumeration {
            enum "account-logoff" {
              value 0;
              description "Account logoff event";
            }
            enum "account-logon" {
              value 1;
              description "Account logon event";
            }
            enum "authentication-failure" {
              value 2;
              description
                "Authentication failure event";
            }
            enum "authentication-no-response" {
              value 3;
              description
                "Authentication no response event";
            }
            enum "authorization-failure" {
              value 4;
              description
                "Authorization failure event";
            }
            enum "authorization-no-response" {
              value 5;
              description
                "Authorization no response event";
            }
            enum "authorize-dhcp-renew" {
              value 6;
              description
                "Authorize dhcp renew packet event";
            }
            enum "credit-exhausted" {
              value 7;
              description
                "Credit exhaustion event";
            }
            enum "exception" {
              value 8;
              description "Exception event";
            }
            enum "idle-timeout" {
              value 9;
              description "Idle timeout event";
            }
            enum "quota-depleted" {
              value 10;
              description
                "Quota depletion event";
            }
            enum "service-start" {
              value 11;
              description "Service start event";
            }
            enum "service-stop" {
              value 12;
              description "Service stop event";
            }
            enum "session-activate" {
              value 13;
              description
                "Session activate event";
            }
            enum "session-established" {
              value 14;
              description
                "session is in activated state (address is assigned to session)";
            }
            enum "session-identity-change" {
              value 15;
              description
                "session identity change event";
            }
            enum "session-start" {
              value 16;
              description "Session start event";
            }
            enum "session-stop" {
              value 17;
              description "Session stop event";
            }
            enum "session-umi-report" {
              value 18;
              description
                "session umi report event";
            }
            enum "timer-expiry" {
              value 19;
              description "Timer expiry event";
            }
          }
        }
    
        typedef dscp-value {
          type union {
            type uint8 {
              range "0..63";
            }
            type string {
              pattern
                "([0-9]{1,2})-([0-9]{1,2})";
            }
            type enumeration {
              enum "af11" {
                value 0;
                description
                  "Match packets with AF11 dscp (001010)";
              }
              enum "af12" {
                value 1;
                description
                  "Match packets with AF12 dscp (001100)";
              }
              enum "af13" {
                value 2;
                description
                  "Match packets with AF13 dscp (001110)";
              }
              enum "af21" {
                value 3;
                description
                  "Match packets with AF21 dscp (010010)";
              }
              enum "af22" {
                value 4;
                description
                  "Match packets with AF22 dscp (010100)";
              }
              enum "af23" {
                value 5;
                description
                  "Match packets with AF23 dscp (010110)";
              }
              enum "af31" {
                value 6;
                description
                  "Match packets with AF31 dscp (011010)";
              }
              enum "af32" {
                value 7;
                description
                  "Match packets with AF32 dscp (011100)";
              }
              enum "af33" {
                value 8;
                description
                  "Match packets with AF33 dscp (011110)";
              }
              enum "af41" {
                value 9;
                description
                  "Match packets with AF41 dscp (100010)";
              }
              enum "af42" {
                value 10;
                description
                  "Match packets with AF42 dscp (100100)";
              }
              enum "af43" {
                value 11;
                description
                  "Match packets with AF43 dscp (100110)";
              }
              enum "cs1" {
                value 12;
                description
                  "Match packets with CS1(precedence 1) dscp (001000)";
              }
              enum "cs2" {
                value 13;
                description
                  "Match packets with CS2(precedence 2) dscp (010000)";
              }
              enum "cs3" {
                value 14;
                description
                  "Match packets with CS3(precedence 3) dscp (011000)";
              }
              enum "cs4" {
                value 15;
                description
                  "Match packets with CS4(precedence 4) dscp (100000)";
              }
              enum "cs5" {
                value 16;
                description
                  "Match packets with CS5(precedence 5) dscp (101000)";
              }
              enum "cs6" {
                value 17;
                description
                  "Match packets with CS6(precedence 6) dscp (110000)";
              }
              enum "cs7" {
                value 18;
                description
                  "Match packets with CS7(precedence 7) dscp (111000)";
              }
              enum "default" {
                value 19;
                description
                  "Match packets with default DSCP (000000)";
              }
              enum "ef" {
                value 20;
                description
                  "Match packets with EF dscp (101110)";
              }
            }
          }
          description
            "Differentiated services codepoint value";
        }
    
        typedef protocol-type {
          type union {
            type uint8 {
              range "0..255";
            }
            type string {
              pattern
                "([0-9]{1,3})-([0-9]{1,3})";
            }
            type enumeration {
              enum "ahp" {
                value 0;
                description
                  "Authentication Header Protocol";
              }
              enum "eigrp" {
                value 1;
                description
                  "Cisco's EIGRP Routing Protocol";
              }
              enum "esp" {
                value 2;
                description
                  "Encapsulation Security Payload";
              }
              enum "gre" {
                value 3;
                description
                  "Cisco's GRE Tunneling";
              }
              enum "icmp" {
                value 4;
                description
                  "Internet Control Message Protocol";
              }
              enum "igmp" {
                value 5;
                description
                  "Internet Gateway Message Protocol";
              }
              enum "igrp" {
                value 6;
                description
                  "Cisco's IGRP Routing Protocol";
              }
              enum "ipinip" {
                value 7;
                description "IP in IP tunneling";
              }
              enum "ipv4" {
                value 8;
                description "Any IPv4 Protocol";
              }
              enum "ipv6" {
                value 9;
                description "Any IPv6 Protocol";
              }
              enum "ipv6icmp" {
                value 10;
                description
                  "IPV6Internet Control Message Protocol";
              }
              enum "mpls" {
                value 11;
                description "Any MPLS Packet";
              }
              enum "nos" {
                value 12;
                description
                  "KA9Q NOS Compatible IP over IP Tunneling";
              }
              enum "ospf" {
                value 13;
                description
                  "OSPF Routing Protocol";
              }
              enum "pcp" {
                value 14;
                description
                  "Payload Compression Protocol";
              }
              enum "pim" {
                value 15;
                description
                  "Protocol Independent Multicast";
              }
              enum "sctp" {
                value 16;
                description
                  "Stream Control Transmission Protocol";
              }
              enum "tcp" {
                value 17;
                description
                  "Transport Control Protocol";
              }
              enum "udp" {
                value 18;
                description
                  "User Datagram Protocol";
              }
            }
          }
        }
    
        typedef acl-list-name-type {
          type string {
            length "1..64";
          }
          description "Access list name";
        }
    
        typedef packet-length-type {
          type union {
            type uint16 {
              range "0..65535";
            }
            type string {
              pattern
                "([0-9]{1,5})-([0-9]{1,5})";
            }
          }
          description "IP packet length";
        }
    
        typedef precedence-type {
          type union {
            type uint8 {
              range "0..7";
            }
            type enumeration {
              enum "critical" {
                value 0;
                description
                  "Critical precedence (5)";
              }
              enum "flash" {
                value 1;
                description
                  "Flash precedence (3)";
              }
              enum "flash-override" {
                value 2;
                description
                  "Flash override precedence (4)";
              }
              enum "immediate" {
                value 3;
                description
                  "Immediate precedence (2)";
              }
              enum "internet" {
                value 4;
                description
                  "Internetwork control precedence (6)";
              }
              enum "network" {
                value 5;
                description
                  "Network control precedence (7)";
              }
              enum "priority" {
                value 6;
                description
                  "Priority precedence (1)";
              }
              enum "routine" {
                value 7;
                description
                  "Routine precedence (0)";
              }
            }
          }
          description "Precedence value";
        }
    
        typedef port-number-type {
          type union {
            type uint16 {
              range "0..65535";
            }
            type string {
              pattern "([0-9]+)-([0-9]+)";
            }
          }
        }
    
        typedef vlan-id-type {
          type union {
            type uint16 {
              range "1..4094";
            }
            type string {
              pattern
                "([1-9][0-9]{0,3})-([1-9][0-9]{0,3})";
            }
          }
        }
    
        typedef clear-text-password-type {
          type string;
          description "Clear text password";
        }
    
        typedef flow-monitor-map-name-type {
          type string {
            length "1..32";
            pattern
              "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
          }
          description
            "Name of the flow monitor map";
        }
    
        typedef clone-interface-type {
          type xr2:Interface-name {
            pattern "^(Loopback)";
          }
          description "Specify an interface";
        }
    
        typedef rate-unit-type {
          type enumeration {
            enum "bps" {
              value 0;
              description
                "Bits per second (default)";
            }
            enum "gbps" {
              value 1;
              description "Gigabits per second";
            }
            enum "kbps" {
              value 2;
              description "Kilobits per second";
            }
            enum "mbps" {
              value 3;
              description "Megabits per second";
            }
            enum "cellsps" {
              value 4;
              description "Cells per second";
            }
            enum "pps" {
              value 5;
              description "Packets per second";
            }
          }
        }
    
        typedef burst-unit-type {
          type enumeration {
            enum "bytes" {
              value 0;
              description "Bytes (default)";
            }
            enum "gbytes" {
              value 1;
              description "Gigabytes";
            }
            enum "kbytes" {
              value 2;
              description "Kilobytes";
            }
            enum "mbytes" {
              value 3;
              description "Megabytes";
            }
            enum "ms" {
              value 4;
              description "Milliseconds";
            }
            enum "us" {
              value 5;
              description "Microseconds";
            }
            enum "packets" {
              value 6;
              description "Packets";
            }
          }
        }
    
        typedef wred-unit-type {
          type enumeration {
            enum "bytes" {
              value 0;
              description "Bytes";
            }
            enum "gbytes" {
              value 1;
              description "Gigabytes";
            }
            enum "kbytes" {
              value 2;
              description "Kilobytes";
            }
            enum "mbytes" {
              value 3;
              description "Megabytes";
            }
            enum "ms" {
              value 4;
              description "Milliseconds";
            }
            enum "us" {
              value 5;
              description "Microseconds";
            }
            enum "packets" {
              value 6;
              description "Packets (default)";
            }
          }
        }
    
        typedef cac-unit-type {
          type enumeration {
            enum "bps" {
              value 0;
              description "Bits per second";
            }
            enum "gbps" {
              value 1;
              description "Gigabits per second";
            }
            enum "kbps" {
              value 2;
              description
                "Kilobits per second (default)";
            }
            enum "mbps" {
              value 3;
              description "Megabits per second";
            }
            enum "cellsps" {
              value 4;
              description "Cells per second";
            }
          }
        }
    
        typedef pfc-unit-type {
          type enumeration {
            enum "bytes" {
              value 0;
              description "Bytes";
            }
            enum "gbytes" {
              value 1;
              description "Gigabytes";
            }
            enum "kbytes" {
              value 2;
              description "Kilobytes";
            }
            enum "mbytes" {
              value 3;
              description "Megabytes";
            }
            enum "ms" {
              value 4;
              description "Milliseconds";
            }
            enum "us" {
              value 5;
              description "Microseconds";
            }
            enum "cells" {
              value 6;
              description "Cells";
            }
            enum "packets" {
              value 7;
              description "Packets";
            }
          }
        }
    
        typedef service-policy-name-type {
          type string {
            pattern
              "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
          }
        }
    
        grouping class-map-common {
          leaf class-map-name {
            type string {
              pattern
                "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
            }
            description "Name of the class-map";
          }
    
          container match-all {
            presence "Match all match criteria";
            description
              "Match all match criteria";
          }  // container match-all
    
          container match-any {
            presence
              "Match any match criteria (default)";
            description
              "Match any match criteria (default)";
          }  // container match-any
    
          leaf description {
            type string;
            description
              "Set description for this class-map";
          }
        }  // grouping class-map-common
    
        grouping match-access-group {
          container access-group {
            description "Match access group";
            leaf-list ipv4 {
              if-feature match-ipv4-acl;
              type acl-list-name-type;
              description "IPv4 access list";
            }
    
            leaf-list ipv6 {
              if-feature match-ipv6-acl;
              type acl-list-name-type;
              description "IPv6 access list";
            }
    
            leaf-list ethernet-services {
              if-feature match-ethernet-services-acl;
              type acl-list-name-type;
              description "Ethernet-Services";
            }
          }  // container access-group
        }  // grouping match-access-group
    
        grouping match-atm {
          container atm {
            if-feature match-atm;
            description
              "Match based on ATM specific criteria";
            leaf-list clp {
              type uint8 {
                range "0..1";
              }
              max-elements 2;
              ordered-by user;
              description "Match ATM CLP bit";
            }
    
            container oam {
              presence "Match ATM OAM";
              description "Match ATM OAM";
            }  // container oam
          }  // container atm
        }  // grouping match-atm
    
        grouping match-cac {
          container cac {
            if-feature match-cac;
            description
              "Match based on CAC fields";
            container admitted {
              presence
                "Match packets admitted by CAC action";
              description
                "Match packets admitted by CAC action";
            }  // container admitted
    
            container unadmitted {
              presence
                "Match packets unadmitted by CAC action";
              description
                "Match packets unadmitted by CAC action";
            }  // container unadmitted
          }  // container cac
        }  // grouping match-cac
    
        grouping match-cos {
          container cos {
            if-feature match-cos;
            description
              "Match based on IEEE 802.1Q/ISL Class Of Service value";
            leaf-list value {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description "COS value";
            }
          }  // container cos
    
          container cos-inner {
            if-feature match-cos-inner;
            description "Match inner cos values";
            leaf-list value {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description
                "inner cos value (Upto 8 values)";
            }
          }  // container cos-inner
        }  // grouping match-cos
    
        grouping match-dei {
          leaf dei {
            if-feature match-dei;
            type uint8 {
              range "0..1";
            }
            must "not(../dei-inner)";
            description
              "Match based on DEI bit (0/1)";
          }
    
          leaf dei-inner {
            if-feature match-dei-inner;
            type uint8 {
              range "0..1";
            }
            must "not(../dei)";
            description
              "Match inner based on DEI bit (0/1)";
          }
        }  // grouping match-dei
    
        grouping match-destination-address {
          container destination-address {
            description
              "Match based on destination address";
            container ipv4 {
              if-feature match-dst-addr-ipv4;
              description
                "Match based on destination IPv4 address";
              list address-prefix {
                key "address netmask";
                description "IPv4 address";
                leaf address {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 address.";
                }
    
                leaf netmask {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 netmask.";
                }
              }  // list address-prefix
            }  // container ipv4
    
            container ipv6 {
              if-feature match-dst-addr-ipv6;
              description
                "Match based on destination IPv6 address";
              list address-prefix {
                key "address prefix-length";
                description "IPv6 address";
                leaf address {
                  type inet:ipv6-address-no-zone;
                  description "IPv6 address.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "Length of the IPv6 Prefix.";
                }
              }  // list address-prefix
            }  // container ipv6
    
            leaf mac {
              if-feature match-dst-mac;
              type yang:mac-address;
              description "MAC Address";
            }
          }  // container destination-address
        }  // grouping match-destination-address
    
        grouping matchnot-destination-address {
          container destination-address {
            description
              "Match based on destination address";
            container ipv4 {
              description
                "Match based on destination IPv4 address";
              list address-prefix {
                key "address netmask";
                description "IPv4 address";
                leaf address {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 address.";
                }
    
                leaf netmask {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 netmask.";
                }
              }  // list address-prefix
            }  // container ipv4
    
            container ipv6 {
              description
                "Match based on destination IPv6 address";
              list address-prefix {
                key "address prefix-length";
                description "IPv6 address";
                leaf address {
                  type inet:ipv6-address-no-zone;
                  description "IPv6 address.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "Length of the IPv6 Prefix.";
                }
              }  // list address-prefix
            }  // container ipv6
    
            leaf mac {
              if-feature matchnot-mac-address;
              type yang:mac-address;
              description "MAC Address";
            }
          }  // container destination-address
        }  // grouping matchnot-destination-address
    
        grouping match-destination-port {
          container destination-port {
            if-feature match-destination-port;
            description
              "Match based on destination port";
            leaf-list port-number {
              type port-number-type;
              max-elements 5;
              description "destination port";
            }
          }  // container destination-port
        }  // grouping match-destination-port
    
        grouping match-discard-class {
          container discard-class {
            if-feature match-discard-class;
            description
              "Match based on discard class";
            leaf-list id {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description "Discard CLass Id";
            }
          }  // container discard-class
        }  // grouping match-discard-class
    
        grouping match-dscp {
          container dscp {
            if-feature match-dscp;
            description
              "Match based on IP DSCP value";
            leaf-list value {
              type dscp-value;
              description "DSCP value";
            }
          }  // container dscp
    
          container dscp-ipv4 {
            if-feature match-ipv4-dscp;
            description
              "Match based on IPv4 DSCP value";
            leaf-list value {
              type dscp-value;
              description "DSCP value";
            }
          }  // container dscp-ipv4
    
          container dscp-ipv6 {
            if-feature match-ipv6-dscp;
            description
              "Match based on IPv6 DSCP value";
            leaf-list value {
              type dscp-value;
              description "DSCP value";
            }
          }  // container dscp-ipv6
        }  // grouping match-dscp
    
        grouping match-ethertype {
          container ethertype {
            if-feature match-ethertype;
            description
              "Match based on ethertype";
            leaf-list value {
              type union {
                type uint16 {
                  range "1536..65535";
                }
                type enumeration {
                  enum "arp" {
                    value 0;
                    description
                      "Any ARP Ethertype";
                  }
                  enum "ipv4" {
                    value 1;
                    description
                      "Any IPv4 Ethertype";
                  }
                  enum "ipv6" {
                    value 2;
                    description
                      "Any IPv6 Ethertype";
                  }
                }
              }
              max-elements 8;
              description "Ethertype Value";
            }
          }  // container ethertype
        }  // grouping match-ethertype
    
        grouping match-flow-key {
          container flow-key {
            if-feature match-flow-key;
            description
              "Match based on flow keys";
            container five-tuple {
              must "not(../dst-ip or ../src-ip)";
              presence
                "Five tuples to identify a flow";
              description
                "Five tuples to identify a flow";
            }  // container five-tuple
    
            container dst-ip {
              must "not(../five-tuple)";
              presence "Destination IP address";
              description
                "Destination IP address";
            }  // container dst-ip
    
            container src-ip {
              must "not(../five-tuple)";
              presence "Source IP address";
              description "Source IP address";
            }  // container src-ip
    
            container flow-cache {
              description
                "Configure the flow-cache parameters";
              leaf idle-timeout {
                type union {
                  type uint16 {
                    range "1..65534";
                  }
                  type enumeration {
                    enum "None" {
                      value 0;
                      description
                        "The flow does not expire";
                    }
                  }
                }
                description
                  "Maximum time of inactivity for a flow.";
              }
            }  // container flow-cache
          }  // container flow-key
        }  // grouping match-flow-key
    
        grouping match-flow-tag {
          container flow-tag {
            if-feature matchnot-flow-tag;
            description
              "Match based on flow-tag";
            leaf-list tag-number {
              type union {
                type uint8 {
                  range "1..63";
                }
                type string {
                  pattern
                    "([1-9][0-9]{0,1})-([1-9][0-9]{0,1})";
                }
              }
              max-elements 5;
              description "flow-tag number";
            }
          }  // container flow-tag
        }  // grouping match-flow-tag
    
        grouping match-fr-de {
          leaf fr-de {
            if-feature match-fr-de;
            type union {
              type string {
                pattern "1";
              }
              type uint8 {
                range "0..1";
              }
            }
            description
              "Match based on FrameRelay DE bit";
          }
        }  // grouping match-fr-de
    
        grouping match-fragment-type {
          container fragment-type {
            if-feature match-fragment-type;
            description
              "Fragment type for a packet";
            container dont-fragment {
              presence
                "Match don't-Fragment bit";
              description
                "Match don't-Fragment bit";
            }  // container dont-fragment
    
            container first-fragment {
              presence
                "Match first fragment bit";
              description
                "Match first fragment bit";
            }  // container first-fragment
    
            container is-fragment {
              presence "Match is-fragment bit";
              description
                "Match is-fragment bit";
            }  // container is-fragment
    
            container last-fragment {
              presence "Match last fragment bit";
              description
                "Match last fragment bit";
            }  // container last-fragment
          }  // container fragment-type
        }  // grouping match-fragment-type
    
        grouping match-frame-relay {
          container frame-relay {
            if-feature match-fr;
            description
              "Match based on frame-relay specific criteria";
            leaf-list dlci {
              type union {
                type uint16 {
                  range "16..1007";
                }
                type string {
                  pattern
                    "([1-9][0-9]{1,3})-([1-9][0-9]{1,3})";
                }
              }
              max-elements 8;
              description
                "Match frame-relay dlci value(s)";
            }
          }  // container frame-relay
        }  // grouping match-frame-relay
    
        grouping match-ipv4 {
          container ipv4 {
            description
              "Match based on ipv4 icmp";
            container icmp-code {
              description
                "Match based on ipv4 icmp code";
              leaf-list value {
                type union {
                  type uint8 {
                    range "0..255";
                  }
                  type string {
                    pattern
                      "([0-9]{1,3})-([0-9]{1,3})";
                  }
                }
                max-elements 5;
                description "IPv4 ICMP code";
              }
            }  // container icmp-code
    
            container icmp-type {
              description
                "Match based on ipv4 icmp type";
              leaf-list value {
                type union {
                  type uint8 {
                    range "0..255";
                  }
                  type string {
                    pattern
                      "([0-9]{1,3})-([0-9]{1,3})";
                  }
                }
                max-elements 5;
                description "IPv4 ICMP type";
              }
            }  // container icmp-type
          }  // container ipv4
        }  // grouping match-ipv4
    
        grouping match-ipv6 {
          container ipv6 {
            description "Match based on IPv6";
            container icmp-code {
              description "IPv6 ICMP code";
              leaf-list value {
                type union {
                  type uint8 {
                    range "0..255";
                  }
                  type string {
                    pattern
                      "([0-9]{1,3})-([0-9]{1,3})";
                  }
                }
                max-elements 5;
                description "ICMP code";
              }
            }  // container icmp-code
    
            container icmp-type {
              description "IPv6 ICMP type";
              leaf-list value {
                type union {
                  type uint8 {
                    range "0..255";
                  }
                  type string {
                    pattern
                      "([0-9]{1,3})-([0-9]{1,3})";
                  }
                }
                max-elements 5;
                description "ICMP type";
              }
            }  // container icmp-type
          }  // container ipv6
        }  // grouping match-ipv6
    
        grouping match-mpls {
          container mpls {
            description
              "Match based on MPLS specific values";
            container disposition {
              description
                "Match MPLS Label Disposition";
              container access-group {
                description "access group";
                leaf ipv4 {
                  if-feature match-mpls-disp-ipv4-acl;
                  type string {
                    length "1..64";
                  }
                  description "IPv4 access list";
                }
    
                leaf ipv6 {
                  if-feature match-mpls-disp-ipv6-acl;
                  type string {
                    length "1..64";
                  }
                  description "IPv6 access list";
                }
              }  // container access-group
    
              leaf class-map {
                if-feature match-mpls-disp-cmap;
                type string {
                  length "1..32";
                }
                description "class-map name";
              }
            }  // container disposition
    
            container experimental {
              description
                "Match MPLS experimental values";
              container imposition {
                if-feature match-mpls-exp-imposition;
                description
                  "Match imposition label";
                leaf-list label {
                  type uint8 {
                    range "0..7";
                  }
                  max-elements 8;
                  description
                    "MPLS experimental label";
                }
              }  // container imposition
    
              container topmost {
                if-feature match-mpls-exp-top;
                description
                  "Match topmost label";
                leaf-list label {
                  type uint8 {
                    range "0..7";
                  }
                  max-elements 8;
                  description
                    "MPLS experimental label";
                }
              }  // container topmost
            }  // container experimental
          }  // container mpls
        }  // grouping match-mpls
    
        grouping matchnot-mpls {
          container mpls {
            description
              "Match based on MPLS specific values";
            container disposition {
              description
                "Match MPLS Label Disposition";
              container access-group {
                description "access group";
                leaf ipv4 {
                  if-feature matchnot-mpls-disp-ipv4-acl;
                  type string {
                    length "1..64";
                  }
                  description "IPv4 access list";
                }
    
                leaf ipv6 {
                  if-feature matchnot-mpls-disp-ipv6-acl;
                  type string {
                    length "1..64";
                  }
                  description "IPv6 access list";
                }
              }  // container access-group
            }  // container disposition
    
            container experimental {
              description
                "Match MPLS experimental values";
              container topmost {
                description
                  "Match topmost label";
                leaf-list label {
                  type uint8 {
                    range "0..7";
                  }
                  max-elements 8;
                  description
                    "MPLS experimental label";
                }
              }  // container topmost
            }  // container experimental
          }  // container mpls
        }  // grouping matchnot-mpls
    
        grouping match-packet {
          container packet {
            description
              "Match based on packet length";
            container length {
              description "Packet length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
                description "IP Packet Length";
              }
            }  // container length
    
            container length-ipv4 {
              if-feature match-ipv4-packet-length;
              description "IPV4 Packet Length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
              }
            }  // container length-ipv4
    
            container length-ipv6 {
              if-feature match-ipv6-packet-length;
              description "IPV6 Packet Length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
              }
            }  // container length-ipv6
          }  // container packet
        }  // grouping match-packet
    
        grouping matchnot-packet {
          container packet {
            description
              "Match based on packet length";
            container length {
              description "Packet length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
                description "IP Packet Length";
              }
            }  // container length
    
            container length-ipv4 {
              if-feature matchnot-ipv4-packet-length;
              description "IPV4 Packet Length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
              }
            }  // container length-ipv4
    
            container length-ipv6 {
              if-feature matchnot-ipv6-packet-length;
              description "IPV6 Packet Length";
              leaf-list value {
                type packet-length-type;
                max-elements 5;
              }
            }  // container length-ipv6
          }  // container packet
        }  // grouping matchnot-packet
    
        grouping match-precedence {
          container precedence {
            if-feature match-prec;
            description
              "Match based on IP precedence values";
            leaf-list value {
              type precedence-type;
              max-elements 8;
              description "IP precedence";
            }
          }  // container precedence
    
          container precedence-ipv4 {
            if-feature match-ipv4-prec;
            description
              "Match based on IPV4 precedence";
            leaf-list value {
              type precedence-type;
              max-elements 8;
              description "IPV4 precedence";
            }
          }  // container precedence-ipv4
    
          container precedence-ipv6 {
            if-feature match-ipv6-prec;
            description
              "Match based on IPV6 precedence";
            leaf-list value {
              type precedence-type;
              max-elements 8;
              description "IPV6 precedence";
            }
          }  // container precedence-ipv6
        }  // grouping match-precedence
    
        grouping match-protocol {
          container protocol {
            description
              "Match based on L3 protocol (Upto 8 values or ranges)";
            leaf-list number {
              type protocol-type;
              max-elements 8;
              description "Protocol Number";
            }
          }  // container protocol
        }  // grouping match-protocol
    
        grouping match-qos-group {
          container qos-group {
            description
              "Match based on QoS Group";
            leaf-list id {
              type union {
                type uint16 {
                  range "0..512";
                }
                type string {
                  pattern
                    "([0-9]{1,3})-([0-9]{1,3})";
                }
              }
              max-elements 8;
              description "QoS Group Id";
            }
          }  // container qos-group
        }  // grouping match-qos-group
    
        grouping match-traffic-class {
          container traffic-class {
            description
              "Match based on Traffic Class";
            leaf-list id {
              type union {
                type uint8 {
                  range "0..63";
                }
                type string {
                  pattern
                    "([0-9]{1,2})-([0-9]{1,2})";
                }
              }
              max-elements 8;
              description "Traffic Class Id";
            }
          }  // container traffic-class
        }  // grouping match-traffic-class
    
        grouping match-source-address {
          container source-address {
            description
              "Match based on source address";
            container ipv4 {
              if-feature match-src-addr-ipv4;
              description
                "Match based on source IPv4 address";
              list address-prefix {
                key "address netmask";
                description "IPv4 address";
                leaf address {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 address.";
                }
    
                leaf netmask {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 netmask.";
                }
              }  // list address-prefix
            }  // container ipv4
    
            container ipv6 {
              if-feature match-src-addr-ipv6;
              description
                "Match based on source IPv6 address";
              list address-prefix {
                key "address prefix-length";
                description "IPv6 address";
                leaf address {
                  type inet:ipv6-address-no-zone;
                  description "IPv6 address.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "Length of the IPv6 Prefix.";
                }
              }  // list address-prefix
            }  // container ipv6
    
            leaf mac {
              if-feature match-src-mac;
              type yang:mac-address;
              description "MAC Address";
            }
          }  // container source-address
        }  // grouping match-source-address
    
        grouping matchnot-source-address {
          container source-address {
            description
              "Match based on source address";
            container ipv4 {
              description
                "Match based on source IPv4 address";
              list address-prefix {
                key "address netmask";
                description "IPv4 address";
                leaf address {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 address.";
                }
    
                leaf netmask {
                  type inet:ipv4-address-no-zone;
                  description "IPv4 netmask.";
                }
              }  // list address-prefix
            }  // container ipv4
    
            container ipv6 {
              description
                "Match based on source IPv6 address";
              list address-prefix {
                key "address prefix-length";
                description "IPv6 address";
                leaf address {
                  type inet:ipv6-address-no-zone;
                  description "IPv6 address.";
                }
    
                leaf prefix-length {
                  type uint8 {
                    range "0..128";
                  }
                  description
                    "Length of the IPv6 Prefix.";
                }
              }  // list address-prefix
            }  // container ipv6
    
            leaf mac {
              if-feature matchnot-mac-address;
              type yang:mac-address;
              description "MAC Address";
            }
          }  // container source-address
        }  // grouping matchnot-source-address
    
        grouping match-source-port {
          container source-port {
            if-feature match-source-port;
            description
              "Match based on source port";
            leaf-list number {
              type port-number-type;
              max-elements 5;
              description "source port";
            }
          }  // container source-port
        }  // grouping match-source-port
    
        grouping match-tcp-flag {
          container tcp-flag {
            description
              "Match based on TCP flags";
            leaf value {
              type uint16 {
                range "0..4095";
              }
              description "TCP flags value";
            }
    
            container any {
              presence
                "Match based on any bit set";
              description
                "Match based on any bit set";
            }  // container any
          }  // container tcp-flag
        }  // grouping match-tcp-flag
    
        grouping match-vlan {
          container vlan {
            if-feature match-vlan;
            description
              "Match based on Vlan Ids";
            leaf-list vlan-id {
              type vlan-id-type;
              max-elements 8;
              description "Vlan Id";
            }
          }  // container vlan
    
          container vlan-inner {
            if-feature match-vlan-inner;
            description
              "Match based on inner Vlan Ids";
            leaf-list vlan-id {
              type vlan-id-type;
              max-elements 8;
              description "inner Vlan Id";
            }
          }  // container vlan-inner
        }  // grouping match-vlan
    
        grouping matchnot-vlan {
          container vlan {
            if-feature matchnot-vlan;
            description
              "Match based on Vlan Ids";
            leaf-list vlan-id {
              type vlan-id-type;
              max-elements 8;
              description "Vlan Id";
            }
          }  // container vlan
    
          container vlan-inner {
            if-feature matchnot-vlan-inner;
            description
              "Match based on inner Vlan Ids";
            leaf-list vlan-id {
              type vlan-id-type;
              max-elements 8;
              description "inner Vlan Id";
            }
          }  // container vlan-inner
        }  // grouping matchnot-vlan
    
        grouping match-vpls {
          container vpls {
            description
              "Match based on VPLS fields";
            container known {
              if-feature match-vpls-known;
              presence "VPLS Known";
              description "VPLS Known";
            }  // container known
    
            container unknown {
              if-feature match-vpls-unknown;
              presence "VPLS Unknown";
              description "VPLS Unknown";
            }  // container unknown
    
            container broadcast {
              presence "VPLS Broadcast";
              description "VPLS Broadcast";
            }  // container broadcast
    
            container control {
              if-feature match-vpls-control;
              presence "VPLS Control";
              description "VPLS Control";
            }  // container control
    
            container multicast {
              presence "VPLS Multicast";
              description "VPLS Multicast";
            }  // container multicast
          }  // container vpls
        }  // grouping match-vpls
    
        grouping matchnot-vpls {
          container vpls {
            description
              "Match based on VPLS fields";
            container known {
              if-feature matchnot-vpls-known;
              presence "VPLS Known";
              description "VPLS Known";
            }  // container known
    
            container unknown {
              if-feature matchnot-vpls-unknown;
              presence "VPLS Unknown";
              description "VPLS Unknown";
            }  // container unknown
    
            container broadcast {
              if-feature matchnot-vpls-bcast;
              presence "VPLS Broadcast";
              description "VPLS Broadcast";
            }  // container broadcast
    
            container control {
              if-feature matchnot-vpls-control;
              presence "VPLS Control";
              description "VPLS Control";
            }  // container control
    
            container multicast {
              if-feature matchnot-vpls-mcast;
              presence "VPLS Multicast";
              description "VPLS Multicast";
            }  // container multicast
          }  // container vpls
        }  // grouping matchnot-vpls
    
        grouping match-authen-status {
          leaf authen-status {
            if-feature match-authen-status;
            type enumeration {
              enum "authenticated" {
                value 0;
                description "Authenticated";
              }
              enum "unauthenticated" {
                value 1;
                description "Unauthenticated";
              }
            }
            description "Authentication Status";
          }
        }  // grouping match-authen-status
    
        grouping match-circuit-id {
          container circuit-id {
            description
              "Match based on circuit ID";
            leaf-list value {
              type string {
                length "1..32";
              }
              description "circuit ID";
            }
          }  // container circuit-id
    
          container circuit-id-regexp {
            description
              "Match based on circuit ID regular expression";
            leaf-list value {
              type string {
                length "1..32";
              }
              description
                "Circuit ID regular expression";
            }
          }  // container circuit-id-regexp
        }  // grouping match-circuit-id
    
        grouping match-dhcp-client-id {
          container dhcp-client-id {
            description
              "Match based on dhcp client id";
            list client-id {
              key "id flag";
              description "client id";
              leaf id {
                type string {
                  length "1..32";
                }
                description "client id";
              }
    
              leaf flag {
                type enumeration {
                  enum "ascii" {
                    value 0;
                    description "Ascii value";
                  }
                  enum "hex" {
                    value 1;
                    description "Hex value";
                  }
                  enum "none" {
                    value 2;
                    description "No flag set";
                  }
                }
                description "client id flag";
              }
            }  // list client-id
          }  // container dhcp-client-id
    
          container dhcp-client-id-regexp {
            description
              "Match based on dhcp client id regular expression";
            list client-id {
              key "id flag";
              description
                "client id with regular expression";
              leaf id {
                type string {
                  length "1..32";
                }
                description
                  "client id with regular expression";
              }
    
              leaf flag {
                type enumeration {
                  enum "ascii" {
                    value 0;
                    description "Ascii value";
                  }
                  enum "hex" {
                    value 1;
                    description "Hex value";
                  }
                  enum "none" {
                    value 2;
                    description "No flag set";
                  }
                }
                description "client id flag";
              }
            }  // list client-id
          }  // container dhcp-client-id-regexp
        }  // grouping match-dhcp-client-id
    
        grouping match-domain {
          container domain {
            description
              "Match base on domain name";
            list domain-name {
              key "name format";
              description "Domain name";
              leaf name {
                type string {
                  length "1..32";
                }
                description "Domain name";
              }
    
              leaf format {
                type string {
                  length "1..32";
                }
                description "Domain format name";
              }
            }  // list domain-name
          }  // container domain
    
          container domain-regexp {
            description
              "Match base on domain name with regular expression";
            list domain-name {
              key "regexp format";
              description "Domain name";
              leaf regexp {
                type string {
                  length "1..32";
                }
                description
                  "Domain name with regular expression";
              }
    
              leaf format {
                type string {
                  length "1..32";
                }
                description "Domain format name";
              }
            }  // list domain-name
          }  // container domain-regexp
        }  // grouping match-domain
    
        grouping match-control-protocol {
          container protocol {
            description
              "Match based on protocol";
            leaf-list name {
              if-feature match-proto;
              type enumeration {
                enum "dhcpv4" {
                  value 0;
                  description "dhcpv4";
                }
                enum "dhcpv6" {
                  value 1;
                  description "dhcpv6";
                }
                enum "ppp" {
                  value 2;
                  description "ppp";
                }
              }
              max-elements 3;
              description "protocol name";
            }
          }  // container protocol
        }  // grouping match-control-protocol
    
        grouping match-remote-id {
          container remote-id {
            description
              "Match based on remote ID";
            leaf-list id {
              type string {
                length "1..32";
              }
              description "remote-id";
            }
          }  // container remote-id
    
          container remote-id-regexp {
            description
              "Remote ID with regular expression";
            leaf-list id {
              type string {
                length "1..32";
              }
              description
                "remote-id with regular expression";
            }
          }  // container remote-id-regexp
        }  // grouping match-remote-id
    
        grouping match-service-name {
          container service-name {
            description
              "Match based on service name";
            leaf-list name {
              type string {
                length "1..32";
              }
              description "Service name";
            }
          }  // container service-name
    
          container service-name-regexp {
            description
              "Match based on service name with regular expression";
            leaf-list name {
              type string {
                length "1..32";
              }
              description
                "Service name with regular expression";
            }
          }  // container service-name-regexp
        }  // grouping match-service-name
    
        grouping match-timer {
          container timer {
            if-feature match-timer;
            description "Match based on timer";
            leaf-list name {
              type string {
                length "1..32";
              }
              description "Timer name";
            }
          }  // container timer
    
          container timer-regexp {
            description
              "Timer with regular expression";
            leaf-list name {
              type string {
                length "1..32";
              }
              description
                "Timer name with regular expression";
            }
          }  // container timer-regexp
        }  // grouping match-timer
    
        grouping match-username {
          container username {
            if-feature match-username;
            description
              "Match based on user name";
            leaf-list name {
              type string {
                length "1..32";
              }
              description "User name";
            }
          }  // container username
    
          container username-regexp {
            if-feature match-username;
            description
              "Match based on user name with regular expression";
            leaf-list name {
              type string {
                length "1..32";
              }
              description
                "User name with regular expression";
            }
          }  // container username-regexp
        }  // grouping match-username
    
        grouping policy-map-common {
          leaf policy-map-name {
            type string;
            description "Name of the policymap";
          }
    
          leaf description {
            type string;
            description
              "Set description for this policy-map";
          }
        }  // grouping policy-map-common
    
        grouping policy-action-compress {
          container compress {
            if-feature action-compress-header-ip;
            description
              "Configure compress action";
            container header {
              description
                "Configure header compression";
              container ip {
                presence
                  "Configure IP header compression";
                description
                  "Configure IP header compression";
              }  // container ip
            }  // container header
          }  // container compress
        }  // grouping policy-action-compress
    
        grouping policy-action-encap-sequence {
          leaf encap-sequence {
            if-feature action-encap-sequence;
            type union {
              type uint8 {
                range "1..15";
              }
              type enumeration {
                enum "none" {
                  value 0;
                  description
                    "Encapsulation sequence none";
                }
              }
            }
            description
              "Configure encapsulation sequence";
          }
        }  // grouping policy-action-encap-sequence
    
        grouping aaa-method {
          container aaa {
            description "AAA specification";
            leaf list {
              type union {
                type string;
                type enumeration {
                  enum "default" {
                    value 0;
                    description
                      "default AAA method list";
                  }
                }
              }
              description
                "Specify AAA method list that authentication should be made with";
            }
          }  // container aaa
        }  // grouping aaa-method
    
        grouping subscriber-actions {
          container activate {
            description "Activate";
            container dynamic-template {
              description
                "actions related to dynamic templates";
              leaf template-name {
                type string;
                description
                  "Dynamic template name";
              }
    
              uses aaa-method;
            }  // container dynamic-template
          }  // container activate
    
          container deactivate {
            description "Deactivate";
            container dynamic-template {
              description
                "actions related to dynamic templates";
              leaf template-name {
                type string;
                description
                  "Dynamic template name";
              }
    
              uses aaa-method;
            }  // container dynamic-template
          }  // container deactivate
    
          container authenticate {
            if-feature action-authenticate;
            description
              "Authentication related configuration";
            uses aaa-method;
          }  // container authenticate
    
          container authorize {
            if-feature action-authorize;
            description "Authorize";
            uses aaa-method;
    
            leaf format {
              type string;
              description
                "Specify an Authorize format name";
            }
    
            leaf identifier {
              type enumeration {
                enum "circuit-id" {
                  value 0;
                  description
                    "Authorize circuit ID";
                }
                enum "dhcp-client-id" {
                  value 1;
                  description
                    "Authorize dhcp client ID";
                }
                enum "remote-id" {
                  value 2;
                  description
                    "Authorize remote ID";
                }
                enum "service-name" {
                  value 3;
                  description
                    "Authorize Service Name";
                }
                enum "source-address-ipv4" {
                  value 4;
                  description
                    "Authorize source IPv4 address";
                }
                enum "source-address-ipv6" {
                  value 5;
                  description
                    "Authorize source IPv6 address";
                }
                enum "source-address-mac" {
                  value 6;
                  description
                    "Authorize source MAC address";
                }
                enum "username" {
                  value 7;
                  description
                    "Authorize username";
                }
              }
              description
                "Specify an Authorize identifier";
            }
    
            leaf password {
              type union {
                type clear-text-password-type;
                type enumeration {
                  enum "blank" {
                    value 0;
                    description
                      "use blank password";
                  }
                  enum "use-from-line" {
                    value 1;
                    description "use from line";
                  }
                }
              }
              description
                "Specify a password to be used for AAA request";
            }
          }  // container authorize
    
          container disconnect {
            if-feature action-disconnect;
            presence "Disconnect session";
            description "Disconnect session";
          }  // container disconnect
    
          container monitor {
            if-feature action-monitor;
            presence "Monitor session";
            description "Monitor session";
          }  // container monitor
    
          container set-timer {
            if-feature action-set-timer;
            must "name and value";
            presence
              "indicates set-timer is configured";
            description
              "Set a timer to execute a rule on its expiry";
            leaf name {
              type string;
              description "Name of the timer";
            }
    
            leaf value {
              type uint32 {
                range "1..4294967295";
              }
              units "minutes";
            }
          }  // container set-timer
    
          container stop-timer {
            if-feature action-stop-timer;
            description
              "Disable timer before it expires";
            leaf name {
              type string;
              description "Name of the timer";
            }
          }  // container stop-timer
        }  // grouping subscriber-actions
    
        grouping pbr-actions {
          container drop {
            presence "Drop the packet";
            description "Drop the packet";
          }  // container drop
    
          leaf http-redirect {
            if-feature action-http-redirect;
            type string;
            description
              "Configure HTTP redirect. Specify the URL HTTP requests should be redirected to";
          }
    
          container http-enrichment {
            if-feature action-http-enrichment;
            description
              "Configure HTTP enrichment";
            container subscriber-mac {
              presence "Subscriber MAC address";
              description
                "Subscriber MAC address";
            }  // container subscriber-mac
    
            container subscriber-ip {
              presence
                "Subscriber ipv4/ipv6 address";
              description
                "Subscriber ipv4/ipv6 address";
            }  // container subscriber-ip
    
            container hostname {
              presence "Hostname";
              description "Hostname";
            }  // container hostname
    
            container bng-interface {
              presence
                "BNG identifier interface";
              description
                "BNG identifier interface";
            }  // container bng-interface
          }  // container http-enrichment
    
          container police {
            description "Police traffic";
            container rate {
              must "value and unit";
              presence
                "indicates rate is configured";
              description
                "Committed Information Rate";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
              }
    
              leaf unit {
                type rate-unit-type;
              }
            }  // container rate
          }  // container police
    
          container redirect-ipv4 {
            if-feature action-redirect-nexthop;
            description
              "Configure PBF redirect feature with IPv4 configurations";
            container default-route {
              presence
                "Forward to the default nexthop";
              description
                "Forward to the default nexthop";
            }  // container default-route
    
            container nexthop1 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv4-address;
                description
                  "IPv4 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop1
    
            container nexthop2 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv4-address;
                description
                  "IPv4 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop2
    
            container nexthop3 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv4-address;
                description
                  "IPv4 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop3
          }  // container redirect-ipv4
    
          container redirect-ipv6 {
            if-feature action-redirect-nexthop;
            description
              "Configure PBF redirect feature with IPv6 configurations";
            container default-route {
              presence
                "Forward to the default nexthop";
              description
                "Forward to the default nexthop";
            }  // container default-route
    
            container nexthop1 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv6-address;
                description
                  "IPv6 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop1
    
            container nexthop2 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv6-address;
                description
                  "IPv6 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop2
    
            container nexthop3 {
              description
                "Forward to specified nexthop";
              leaf address {
                type inet:ipv6-address;
                description
                  "IPv6 Nexthop address";
              }
    
              leaf vrf {
                type union {
                  type string;
                  type enumeration {
                    enum "default" {
                      value 0;
                      description
                        "Redirect to the default vrf";
                    }
                  }
                }
                description
                  "Enter specific VRF Name for this nexthop";
              }
            }  // container nexthop3
          }  // container redirect-ipv6
    
          container redirect-nexthop {
            if-feature action-redirect-rt;
            description
              "Configure PBF redirect feature with forwarding to specified nexthop";
            container route-target {
              must
                "(address and index) or as-number";
              presence
                "indicates route-target is configured";
              description
                "Enter specific route-target string";
              leaf address {
                type inet:ipv4-address-no-zone;
                description "IPv4 address.";
              }
    
              leaf index {
                type uint16 {
                  range "0..65535";
                }
                description "IPv4 Address:index";
              }
    
              leaf as-number {
                type union {
                  type string {
                    pattern
                      "([1-9][0-9]{0,4}):(0|[1-9][0-9]{0,4})";
                  }
                  type string {
                    pattern
                      "(65536:|[1-9][0-9]{0,10}:)(0|[1-9][0-9]{0,4})";
                  }
                }
                description "AS number";
              }
            }  // container route-target
          }  // container redirect-nexthop
    
          container service-function-path {
            if-feature action-service-function;
            description
              "Configure NSH service function action";
            leaf path-id {
              type uint32 {
                range "1..16777215";
              }
              must "../index";
              description
                "Service function path id";
            }
    
            leaf index {
              type uint8 {
                range "1..255";
              }
              must "../path-id";
              description
                "Specify service path index";
            }
    
            leaf metadata {
              type string;
              must "../index and ../path-id";
              description
                "service-function metadata";
            }
          }  // container service-function-path
    
          container set {
            description
              "Configure marking for this class";
            container destination-address {
              if-feature action-set-dst-address;
              description
                "Set Destination address";
              leaf ipv4 {
                type inet:ipv4-address;
                description "IPv4 address";
              }
            }  // container destination-address
    
            leaf df {
              if-feature action-set-df;
              type uint8 {
                range "0..1";
              }
              description "Set DF bit";
            }
    
            leaf dscp {
              type dscp-value;
              description "Set DSCP";
            }
    
            leaf forward-class {
              if-feature action-set-fwd-class;
              type uint8 {
                range "1..7";
              }
              description "Set forward class";
            }
    
            container source-address {
              if-feature action-set-src-address;
              description "Set Source address";
              leaf ipv4 {
                type inet:ipv4-address;
                description "IPv4 address";
              }
            }  // container source-address
          }  // container set
    
          container transmit {
            if-feature action-transmit;
            presence
              "Forward packet to the original destination";
            description
              "Forward packet to the original destination";
          }  // container transmit
    
          container decapsulate {
            if-feature action-decap-gre;
            description "Decapsulate GRE packet";
            container gre {
              presence "Decapsulate GRE packet";
              description
                "Decapsulate GRE packet";
            }  // container gre
          }  // container decapsulate
        }  // grouping pbr-actions
    
        grouping performance-traffic-actions {
          uses policy-action-compress;
    
          uses policy-action-encap-sequence;
    
          list react {
            if-feature action-react;
            key "operation-id";
            description
              "Generate alert on the specified event";
            leaf operation-id {
              type uint32 {
                range "1..4294967294";
              }
              description
                "Specify an operation id (num)";
            }
    
            container delay-factor {
              presence
                "React criterion delay factor of policy-map action.";
              description
                "React criterion delay factor of policy-map action.";
            }  // container delay-factor
    
            container media-stop {
              presence
                "React criterion media stop of policy-map action.";
              description
                "React criterion media stop of policy-map action.";
            }  // container media-stop
    
            container mrv {
              presence
                "React criterion mrv of policy-map action.";
              description
                "React criterion mrv of policy-map action.";
            }  // container mrv
    
            container flow-count {
              presence
                "React criterion flow count of policy-map action.";
              description
                "React criterion flow count of policy-map action.";
            }  // container flow-count
    
            container packet-rate {
              presence
                "React criterion packet rate of the policy-map action.";
              description
                "React criterion packet rate of the policy-map action.";
            }  // container packet-rate
    
            leaf description {
              type string;
              description
                "Set Description for this alert action";
            }
    
            container trigger {
              description
                "Set the event trigger";
              container value {
                must
                  "lt or le or gt or ge or range";
                presence
                  "indicates value is configured";
                description
                  "Set the trigger criterion";
                leaf lt {
                  type trigger-value;
                  description
                    "trigger only if metric is less than the given value";
                }
    
                leaf le {
                  type trigger-value;
                  description
                    "trigger only if metric is less than or equal to the given value";
                }
    
                leaf gt {
                  type trigger-value;
                  description
                    "trigger only if metric is greater than the given value";
                }
    
                leaf ge {
                  type trigger-value;
                  description
                    "trigger only if metric is greater than or equal to the given value";
                }
    
                leaf range {
                  type trigger-value;
                  description
                    "trigger only if metric is in the inclusive range";
                }
              }  // container value
    
              container type {
                must "immediate or average";
                presence
                  "indicates type is configured";
                description
                  "Set the trigger type";
                container immediate {
                  presence "Immediate trigger";
                  description
                    "Immediate trigger";
                }  // container immediate
    
                leaf average {
                  type uint32 {
                    range "1..60";
                  }
                  description
                    "Trigger averaged over N intervals.";
                }
              }  // container type
            }  // container trigger
    
            container action {
              description "Set the event action";
              container syslog {
                presence "Report via syslog";
                description "Report via syslog";
              }  // container syslog
    
              container snmp {
                if-feature action-react-snmp;
                presence "Report via syslog";
                description "Report via syslog";
              }  // container snmp
            }  // container action
    
            container alarm {
              if-feature action-react-alarm;
              description "Configure alarms";
              container type {
                must "discrete or grouped";
                presence
                  "indicates type is configured";
                description "Set the alarm type";
                container discrete {
                  presence "Discrete alarms";
                  description "Discrete alarms";
                }  // container discrete
    
                container grouped {
                  if-feature action-react-grouped-alarm;
                  description "Grouped alarms";
                  leaf count {
                    type uint16 {
                      range "1..65535";
                    }
                    units "number of flows";
                    must "not(../percent)";
                    description
                      "Grouped on num-flows";
                  }
    
                  leaf percent {
                    type uint8 {
                      range "1..100";
                    }
                    units "percentage";
                    must "not(../count)";
                    description
                      "Grouped on percentage of flows";
                  }
                }  // container grouped
              }  // container type
    
              leaf severity {
                type enumeration {
                  enum "error" {
                    value 0;
                    description
                      "Error level alarm";
                  }
                  enum "critical" {
                    value 1;
                    description
                      "Critical level alarm";
                  }
                  enum "alert" {
                    value 2;
                    description
                      "Alert level alarm";
                  }
                  enum "emergency" {
                    value 3;
                    description
                      "Emergency level alarm";
                  }
                }
                description
                  "Set the alarm severity";
              }
            }  // container alarm
          }  // list react
        }  // grouping performance-traffic-actions
    
        grouping action-common {
          leaf cos {
            type uint8 {
              range "0..7";
            }
            description
              "Sets the specific IEEE 802.1Q Layer 2 CoS value of an
             outgoing packet.
             This command should be used by a router if a user wants
             to mark a packet that is being sent to a switch.
             Switches can leverage Layer 2 header information,
             including a CoS value marking. Packets entering an
             interface cannot be set with a CoS value.";
          }
    
          leaf cos-inner {
            type uint8 {
              range "0..7";
            }
            description "Set inner COS";
          }
    
          leaf dei {
            type uint8 {
              range "0..1";
            }
            description "Set DEI";
          }
    
          leaf dei-imposition {
            type uint8 {
              range "0..1";
            }
            description
              "Set DEI imposition bit.";
          }
    
          leaf discard-class {
            type uint8 {
              range "0..7";
            }
            description
              "Sets the discard class on IPv4 or MPLS packets.
             The discard-class can be used only in service policies
             that are attached in the ingress policy.";
          }
    
          leaf dscp {
            type dscp-value;
            description
              "Set IP DSCP (DiffServ CodePoint)";
          }
    
          leaf dscp-tunnel {
            type dscp-value;
            description
              "Set DSCP Tunnel(for ipsec tunnels)";
          }
    
          leaf fr-de {
            if-feature action-police-set-fr-de;
            type uint8 {
              range "0..1";
            }
            description
              "Set frame relay discard-eligible bit";
          }
    
          container mpls {
            description
              "Set MPLS specific values";
            container experimental {
              description "Set experimental";
              leaf imposition {
                type uint8 {
                  range "0..7";
                }
                description
                  "Sets the experimental value of the MPLS packet
                 imposition labels.
                 Imposition can be used only in service policies that
                 are attached in the ingress policy";
              }
    
              leaf topmost {
                type uint8 {
                  range "0..7";
                }
                description
                  "Sets the experimental value of the MPLS packet top-most
                 labels.";
              }
            }  // container experimental
          }  // container mpls
    
          leaf precedence {
            type precedence-type;
            description "Set IP Precedence";
          }
    
          leaf precedence-tunnel {
            type precedence-type;
            description
              "Set Precedence tunnel(for ipsec tunnels)";
          }
    
          leaf qos-group {
            type uint16 {
              range "0..512";
            }
            description
              "Sets the QoS group identifiers on IPv4 or MPLS packets.
             The set qos-group is supported only on an ingress policy.";
          }
        }  // grouping action-common
    
        grouping police-actions {
          container transmit {
            presence "Transmit packet";
            description "Transmit packet";
          }  // container transmit
    
          container drop {
            presence "Drop packet";
            description "Drop packet";
          }  // container drop
    
          container set {
            description "Conditional marking";
            uses action-common;
          }  // container set
        }  // grouping police-actions
    
        grouping qos-actions {
          container admit {
            if-feature action-cac;
            description "Call admission control";
            container cac {
              description
                "Call admission control (CAC) functionality";
              container local {
                must "rate and flow/rate";
                presence
                  "indicates local is configured";
                description
                  "CAC local flow type (default type)";
                container flow {
                  description "Flow attributes";
                  leaf idle-timeout {
                    type union {
                      type uint16 {
                        range "10..2550";
                      }
                      type enumeration {
                        enum "None" {
                          value 0;
                          description
                            "The flow does not expire";
                        }
                      }
                    }
                    description
                      "Maximum time of inactivity for a flow";
                  }
    
                  container rate {
                    must "value and unit";
                    presence
                      "indicates rate is configured";
                    description "Per flow rate";
                    leaf value {
                      type uint32 {
                        range "1..4294967294";
                      }
                    }
    
                    leaf unit {
                      type cac-unit-type;
                    }
                  }  // container rate
                }  // container flow
    
                container rate {
                  must "value and unit";
                  presence
                    "indicates rate is configured";
                  description
                    "Maximum rate for all flows";
                  leaf value {
                    type uint32 {
                      range "1..4294967294";
                    }
                  }
    
                  leaf unit {
                    type cac-unit-type;
                  }
                }  // container rate
              }  // container local
            }  // container cac
          }  // container admit
    
          container bandwidth {
            if-feature action-bandwidth;
            must "value and unit";
            presence
              "indicates bandwidth is configured";
            description
              "Configure bandwidth for this class";
            leaf value {
              type union {
                type uint32 {
                  range "1..4294967295";
                }
                type uint16 {
                  range "1..1000";
                }
                type uint32 {
                  range "1..1000000";
                }
                type uint32 {
                  range "1..100";
                }
              }
            }
    
            leaf unit {
              type enumeration {
                enum "bps" {
                  value 0;
                  description "Bits per second";
                }
                enum "gbps" {
                  value 1;
                  description
                    "Gigabits per second";
                }
                enum "kbps" {
                  value 2;
                  description
                    "Kilobits per second";
                }
                enum "mbps" {
                  value 3;
                  description
                    "Megabits per second";
                }
                enum "cellsps" {
                  value 4;
                  description "Cells per second";
                }
                enum "per-thousand" {
                  value 5;
                  description
                    "configure parts per-thousand bandwidth";
                }
                enum "per-million" {
                  value 6;
                  description
                    "configure parts per-million bandwidth";
                }
                enum "percent" {
                  value 7;
                  description
                    "configure a percentage bandwidth";
                }
              }
            }
          }  // container bandwidth
    
          container bandwidth-remaining {
            if-feature action-bandwidth;
            must "unit and value";
            presence
              "indicates bandwidth-remaining is configured";
            description
              "Allocate left over bandwidth";
            leaf unit {
              type enumeration {
                enum "percent" {
                  value 0;
                  description
                    "Allocate remaining bandwidth as percentage";
                }
                enum "ratio" {
                  value 1;
                  description
                    "Allocate remaining bandwidth as a ratio";
                }
              }
              description "Bandwidth value unit";
            }
    
            leaf value {
              type union {
                type uint8 {
                  range "1..100";
                }
                type uint32 {
                  range "1..4294967295";
                }
              }
              description "Bandwidth value";
            }
          }  // container bandwidth-remaining
    
          uses policy-action-compress;
    
          uses policy-action-encap-sequence;
    
          leaf fragment {
            if-feature action-service-fragment;
            type string {
              length "1..64";
            }
            description
              "Refer to an existing service fragment. Reference to a Service fragment.";
          }
    
          container pause {
            if-feature action-pfc;
            presence "Configure PFC feature";
            description "Configure PFC feature";
            container buffer-size {
              must "value and unit";
              presence
                "indicates buffer-size is configured";
              description
                "Configure buffer size";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Range of buffer size";
              }
    
              leaf unit {
                type pfc-unit-type;
              }
            }  // container buffer-size
    
            container pause-threshold {
              must "value and unit";
              presence
                "indicates pause-threshold is configured";
              description
                "Configure pasue threshold";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Range of pause threshold";
              }
    
              leaf unit {
                type pfc-unit-type;
              }
            }  // container pause-threshold
    
            container resume-threshold {
              must "value and unit";
              presence
                "indicates resume-threshold is configured";
              description
                "Configure resume threshold";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Range of resume threshold";
              }
    
              leaf unit {
                type pfc-unit-type;
              }
            }  // container resume-threshold
          }  // container pause
    
          container police {
            description "Police traffic";
            container conditional {
              presence
                "Conditional policer for priority traffic";
              description
                "Conditional policer for priority traffic";
            }  // container conditional
    
            container rate {
              must "value and unit";
              presence
                "indicates rate is configured";
              description
                "Committed Information Rate";
              leaf value {
                type union {
                  type uint32 {
                    range "1..4294967295";
                  }
                  type uint8 {
                    range "1..100";
                  }
                  type uint16 {
                    range "1..1000";
                  }
                  type uint32 {
                    range "1..1000000";
                  }
                }
                description
                  "Committed Information Rate";
              }
    
              leaf unit {
                type enumeration {
                  enum "bps" {
                    value 0;
                    description
                      "Bits per second (default)";
                  }
                  enum "gbps" {
                    value 1;
                    description
                      "Gigabits per second";
                  }
                  enum "kbps" {
                    value 2;
                    description
                      "Kilobits per second";
                  }
                  enum "mbps" {
                    value 3;
                    description
                      "Megabits per second";
                  }
                  enum "cellsps" {
                    value 4;
                    description
                      "Cells per second";
                  }
                  enum "pps" {
                    value 5;
                    description
                      "Packets per second";
                  }
                  enum "percent" {
                    value 6;
                    description
                      "Percent of the link bandwidth";
                  }
                  enum "per-thousand" {
                    value 7;
                    description
                      "Parts per-thousand of the link bandwidth";
                  }
                  enum "per-million" {
                    value 8;
                    description
                      "Parts per-million of the link bandwidth";
                  }
                }
                description "Rate unit";
              }
            }  // container rate
    
            container burst {
              description "Burst size (BC)";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
                description "Burst size (BC)";
              }
    
              leaf unit {
                type burst-unit-type;
                description "Burst size unit";
              }
            }  // container burst
    
            container peak-burst {
              if-feature action-police-peak-burst;
              description
                "Excess Burst size (BE)";
              leaf value {
                type uint32 {
                  range "1..4294967295";
                }
                description
                  "Exess burst size (BC)";
              }
    
              leaf unit {
                type burst-unit-type;
                description "Burst size unit";
              }
            }  // container peak-burst
    
            container peak-rate {
              must "value and unit";
              presence
                "indicates peak-rate is configured";
              description
                "Peak Information Rate";
              leaf value {
                type union {
                  type uint32 {
                    range "1..4294967295";
                  }
                  type uint8 {
                    range "1..100";
                  }
                }
                description
                  "Peak Information Rate";
              }
    
              leaf unit {
                type enumeration {
                  enum "bps" {
                    value 0;
                    description
                      "Bits per second (default)";
                  }
                  enum "gbps" {
                    value 1;
                    description
                      "Gigabits per second";
                  }
                  enum "kbps" {
                    value 2;
                    description
                      "Kilobits per second";
                  }
                  enum "mbps" {
                    value 3;
                    description
                      "Megabits per second";
                  }
                  enum "cellsps" {
                    value 4;
                    description
                      "Cells per second";
                  }
                  enum "pps" {
                    value 5;
                    description
                      "Packets per second";
                  }
                  enum "percent" {
                    value 6;
                    description
                      "Percent of the link bandwidth";
                  }
                }
              }
            }  // container peak-rate
    
            container conform-action {
              description
                "Action for conforming traffic";
              uses police-actions;
            }  // container conform-action
    
            container exceed-action {
              description
                "Action for exceeding traffic";
              uses police-actions;
            }  // container exceed-action
    
            container violate-action {
              description
                "Action for violating traffic";
              uses police-actions;
            }  // container violate-action
    
            leaf conform-color {
              if-feature action-police-conform-color;
              type string;
              description
                "Configure conform color class for color aware policing. Conform color class name.";
            }
    
            leaf exceed-color {
              if-feature action-police-exceed-color;
              type string;
              description
                "Configure exceed color class for color aware policing. Exceed color class name.";
            }
    
            container child-conform-aware {
              if-feature action-police-coupled;
              presence "Enable coupled policing";
              description
                "Enable coupled policing";
            }  // container child-conform-aware
          }  // container police
    
          container priority {
            description
              "Assign priority to this class";
            leaf level {
              type uint8 {
                range "1..7";
              }
              description
                "Configure a priority level";
            }
          }  // container priority
    
          container queue-limits {
            description "Queue Limit Node";
            list queue-limit {
              key "value unit";
              description
                "Configure queue-limit (taildrop threshold) for this class";
              leaf value {
                type union {
                  type uint32 {
                    range "1..4294967295";
                  }
                  type uint8 {
                    range "1..100";
                  }
                }
                description "queue-limit value";
              }
    
              leaf unit {
                type enumeration {
                  enum "bytes" {
                    value 0;
                    description "Bytes";
                  }
                  enum "kbytes" {
                    value 1;
                    description "Kilobytes";
                  }
                  enum "mbytes" {
                    value 2;
                    description "Megabytes";
                  }
                  enum "ms" {
                    value 3;
                    description "Milliseconds";
                  }
                  enum "packets" {
                    value 4;
                    description
                      "Packets (default)";
                  }
                  enum "us" {
                    value 5;
                    description "Microseconds";
                  }
                  enum "percent" {
                    value 6;
                    description
                      "Configure queue limit value in percentage";
                  }
                }
                description "queue-limit unit";
              }
    
              container discard-classes {
                description
                  "discard class container";
                leaf-list discard-class {
                  type uint8 {
                    range "0..7";
                  }
                  description
                    "Remaining bandwidth value.";
                }
              }  // container discard-classes
            }  // list queue-limit
          }  // container queue-limits
    
          container random-detect-default {
            presence
              "Enable RED with default min and max thresholds";
            description
              "Enable RED with default min and max thresholds";
          }  // container random-detect-default
    
          container random-detect-ecn {
            presence "Enable ECN based WRED";
            description "ECN based WRED";
          }  // container random-detect-ecn
    
          list random-detect {
            key "minimum-threshold-value minimum-threshold-unit maximum-threshold-value maximum-threshold-unit";
            description
              "Enable Random Early Detection.
             All RED profiles in a class must be based
             on the same field.";
            leaf minimum-threshold-value {
              type uint32 {
                range "0..1073741823";
              }
              description "Minimum threshold";
            }
    
            leaf minimum-threshold-unit {
              type wred-unit-type;
              description "threshold unit";
            }
    
            leaf maximum-threshold-value {
              type uint32 {
                range "0..1073741823";
              }
              description "Maximum threshold";
            }
    
            leaf maximum-threshold-unit {
              type wred-unit-type;
              description "threshold unit";
            }
    
            leaf-list cos {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description
                "COS based WRED (upto 8 values)";
            }
    
            leaf-list dei {
              type uint8 {
                range "0..1";
              }
              max-elements 8;
              description "DEI based WRED";
            }
    
            leaf-list discard-class {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description
                "Discard Class based WRED";
            }
    
            leaf-list dscp {
              type dscp-value;
              max-elements 8;
              description "DSCP based WRED";
            }
    
            leaf-list exp {
              type uint8 {
                range "0..7";
              }
              max-elements 8;
              description
                "MPLS Experimental value based WRED";
            }
    
            leaf-list precedence {
              type union {
                type uint8 {
                  range "0..7";
                }
                type enumeration {
                  enum "critical" {
                    value 0;
                    description
                      "Critical precedence (5)";
                  }
                  enum "flash" {
                    value 1;
                    description
                      "Flash precedence (3)";
                  }
                  enum "flash-override" {
                    value 2;
                    description
                      "Flash override precedence (4)";
                  }
                  enum "immediate" {
                    value 3;
                    description
                      "Immediate precedence (2)";
                  }
                  enum "internet" {
                    value 4;
                    description
                      "Internetwork control precedence (6)";
                  }
                  enum "network" {
                    value 5;
                    description
                      "Network control precedence (7)";
                  }
                  enum "priority" {
                    value 6;
                    description
                      "Priority precedence (1)";
                  }
                  enum "routine" {
                    value 7;
                    description
                      "Routine precedence (0)";
                  }
                }
              }
              max-elements 8;
              description
                "Precedence based WRED";
            }
          }  // list random-detect
    
          leaf service-fragment {
            if-feature action-service-fragment;
            type string {
              length "1..64";
            }
            description
              "Define a service fragment. Name of Service fragment";
          }
    
          container service-policy {
            description
              "Configure a child service policy";
            leaf name {
              type service-policy-name-type;
              description
                "Name of the child service policy";
            }
    
            leaf type {
              type enumeration {
                enum "pbr" {
                  value 0;
                  description "PBR policy-map";
                }
                enum "performance-traffic" {
                  value 1;
                  description
                    "Performance traffic policy-map";
                }
                enum "qos" {
                  value 2;
                  description
                    "QoS policy-map (default)";
                }
                enum "redirect" {
                  value 3;
                  description
                    "Redirect policy-map";
                }
                enum "traffic" {
                  value 4;
                  description
                    "Traffic policy-map";
                }
              }
              description
                "The type of policy-map";
            }
          }  // container service-policy
    
          container set {
            description
              "Configure marking for this class";
            container atm-clp {
              if-feature action-set-atm-clp;
              presence
                "Set atm cell-loss-priority bit";
              description
                "Set atm cell-loss-priority bit";
            }  // container atm-clp
    
            leaf traffic-class {
              if-feature action-set-traffic-class;
              type uint8 {
                range "0..8";
              }
              description
                "Sets the Traffic Class identifiers on IPv4 or MPLS packets.
               The set traffic-class is supported only on an ingress policy.";
            }
    
            leaf forward-class {
              if-feature action-set-fwd-class;
              type uint8 {
                range "1..7";
              }
              description "Set forward class";
            }
    
            uses action-common;
          }  // container set
    
          container shape {
            description
              "Configure shaping for this class";
            container average {
              description "Average rate shaping";
              container rate {
                must "value and unit";
                presence
                  "indicates rate is configured";
                description "Shape rate";
                leaf value {
                  type union {
                    type uint32 {
                      range "1..4294967295";
                    }
                    type uint16 {
                      range "1..1000";
                    }
                    type uint32 {
                      range "1..1000000";
                    }
                    type uint8 {
                      range "1..100";
                    }
                    type string {
                      pattern
                        "[$][a-zA-Z0-9][a-zA-Z0-9\\._@%+:\\-]{0,32}[ ][=][ ]\\d{1,10}";
                    }
                  }
                }
    
                leaf unit {
                  type enumeration {
                    enum "bps" {
                      value 0;
                      description
                        "Bits per second";
                    }
                    enum "cellsps" {
                      value 1;
                      description
                        "Cells per second";
                    }
                    enum "gbps" {
                      value 2;
                      description
                        "Gigabits per second";
                    }
                    enum "kbps" {
                      value 3;
                      description
                        "Kilobits per second";
                    }
                    enum "mbps" {
                      value 4;
                      description
                        "Megabits per second";
                    }
                    enum "per-thousand" {
                      value 5;
                      description
                        "Configure shape rate in per-thousand";
                    }
                    enum "per-million" {
                      value 6;
                      description
                        "Configure shape rate in per-million";
                    }
                    enum "percent" {
                      value 7;
                      description
                        "Configure shape rate in percentage";
                    }
                  }
                  description "Shape rate unit";
                }
              }  // container rate
    
              container excess-burst {
                if-feature action-shape-burst;
                must "size and unit";
                presence
                  "indicates excess-burst is configured";
                description "Excess burst size";
                leaf size {
                  type uint32 {
                    range "1..4294967295";
                  }
                }
    
                leaf unit {
                  type enumeration {
                    enum "bytes" {
                      value 0;
                      description "Bytes";
                    }
                    enum "cells" {
                      value 1;
                      description "Cells";
                    }
                    enum "gbytes" {
                      value 2;
                      description "Gigabytes";
                    }
                    enum "kbytes" {
                      value 3;
                      description "Kilobytes";
                    }
                    enum "mbytes" {
                      value 4;
                      description "Megabytes";
                    }
                    enum "ms" {
                      value 5;
                      description "Milliseconds";
                    }
                    enum "packets" {
                      value 6;
                      description "Packets";
                    }
                    enum "us" {
                      value 7;
                      description "Microseconds";
                    }
                  }
                }
              }  // container excess-burst
            }  // container average
          }  // container shape
        }  // grouping qos-actions
    
        grouping redirect-actions {
          uses policy-action-compress;
    
          uses policy-action-encap-sequence;
    
          container priority {
            presence "Test command";
            description "Test command";
          }  // container priority
        }  // grouping redirect-actions
    
        container class-map {
          description "Configure a class-map";
          container type {
            description "class-map type";
            list qos {
              if-feature cmap-type-qos;
              must
                "not(match-all and match-any)";
              key "class-map-name";
              description "QoS class-map";
              uses class-map-common;
    
              container match {
                description
                  "Configure match criteria for this class.";
                uses match-access-group;
    
                uses match-atm;
    
                uses match-cac;
    
                uses match-cos;
    
                uses match-dei;
    
                uses match-destination-address;
    
                uses match-destination-port;
    
                uses match-discard-class;
    
                uses match-dscp;
    
                uses match-ethertype;
    
                uses match-flow-key;
    
                uses match-fr-de;
    
                uses match-fragment-type;
    
                uses match-frame-relay;
    
                uses match-ipv4;
    
                uses match-ipv6;
    
                uses match-mpls;
    
                uses match-packet;
    
                uses match-precedence;
    
                uses match-protocol;
    
                uses match-qos-group;
    
                uses match-source-address;
    
                uses match-source-port;
    
                uses match-tcp-flag;
    
                uses match-traffic-class;
    
                uses match-vlan;
    
                uses match-vpls;
              }  // container match
    
              container match-not {
                description
                  "Negate match criteria";
                uses match-access-group;
    
                uses match-cac;
    
                uses match-cos;
    
                uses match-dei;
    
                uses matchnot-destination-address;
    
                uses match-destination-port;
    
                uses match-discard-class;
    
                uses match-dscp;
    
                uses match-ethertype;
    
                uses match-fragment-type;
    
                uses match-frame-relay;
    
                uses match-ipv4;
    
                uses match-ipv6;
    
                uses matchnot-mpls;
    
                uses matchnot-packet;
    
                uses match-precedence;
    
                uses match-protocol;
    
                uses match-qos-group;
    
                uses matchnot-source-address;
    
                uses match-source-port;
    
                uses match-tcp-flag;
    
                uses match-traffic-class;
    
                uses matchnot-vlan;
    
                uses matchnot-vpls;
              }  // container match-not
            }  // list qos
    
            list subscriber-control {
              must
                "(not(match-all) and not(match-any)) or match-all or match-any";
              key "class-map-name";
              description
                "Subscriber control class-map";
              uses class-map-common;
    
              container match {
                description
                  "Configure match criteria for this class.";
                uses match-authen-status;
    
                uses match-circuit-id;
    
                uses match-dhcp-client-id;
    
                uses match-domain;
    
                uses match-control-protocol;
    
                uses match-remote-id;
    
                uses match-service-name;
    
                uses match-source-address;
    
                uses match-timer;
    
                uses match-username;
              }  // container match
    
              container match-not {
                description
                  "Negate match criteria";
                uses match-authen-status;
    
                uses match-circuit-id;
    
                uses match-dhcp-client-id;
    
                uses match-domain;
    
                uses match-control-protocol;
    
                uses match-remote-id;
    
                uses match-service-name;
    
                uses match-source-address;
    
                uses match-timer;
    
                uses match-username;
              }  // container match-not
            }  // list subscriber-control
    
            list traffic {
              if-feature cmap-type-traffic;
              must
                "not(match-all and match-any)";
              key "class-map-name";
              description "Traffic class-map";
              uses class-map-common;
    
              container match {
                description
                  "Configure match criteria for this class.";
                uses match-access-group;
    
                uses match-atm;
    
                uses match-cos;
    
                uses match-dei;
    
                uses match-destination-address;
    
                uses match-destination-port;
    
                uses match-dscp;
    
                uses match-ethertype;
    
                uses match-flow-key;
    
                uses match-flow-tag;
    
                uses match-fr-de;
    
                uses match-fragment-type;
    
                uses match-frame-relay;
    
                uses match-ipv4 {
                  when "boolean(../match-all)";
                }
    
                uses match-ipv6 {
                  when "boolean(../match-all)";
                }
    
                uses match-mpls;
    
                uses match-packet;
    
                uses match-precedence;
    
                uses match-protocol;
    
                uses match-source-address;
    
                uses match-source-port;
    
                uses match-tcp-flag;
    
                uses match-vlan;
    
                uses match-vpls;
              }  // container match
    
              container match-not {
                description
                  "Negate match criteria";
                uses match-access-group;
    
                uses match-atm;
    
                uses match-cos;
    
                uses match-dei;
    
                uses matchnot-destination-address;
    
                uses match-destination-port;
    
                uses match-dscp;
    
                uses match-ethertype;
    
                uses match-flow-tag;
    
                uses match-fr-de;
    
                uses match-fragment-type;
    
                uses match-frame-relay;
    
                uses match-ipv4 {
                  when "boolean(../match-all)";
                }
    
                uses match-ipv6 {
                  when "boolean(../match-all)";
                }
    
                uses matchnot-mpls;
    
                uses matchnot-packet;
    
                uses match-precedence;
    
                uses match-protocol;
    
                uses matchnot-source-address;
    
                uses match-source-port;
    
                uses match-tcp-flag;
    
                uses matchnot-vlan;
    
                uses matchnot-vpls;
              }  // container match-not
            }  // list traffic
          }  // container type
        }  // container class-map
    
        container policy-map {
          description "Configure a policy-map";
          container type {
            description "policy-map type";
            list accounting {
              if-feature pmap-type-accounting;
              key "policy-map-name";
              description
                "Accounting policy-map";
              uses policy-map-common;
    
              list class {
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic Classmap.";
                    }
                  }
                  description
                    "The type of classmap";
                }
              }  // list class
            }  // list accounting
    
            list subscriber-control {
              if-feature pmap-type-control;
              key "policy-map-name";
              description
                "Subscriber control policy-map";
              uses policy-map-common;
    
              list event {
                must
                  "not(match-all and match-first)";
                key "type";
                description "Policy event";
                leaf type {
                  type event-type;
                  description
                    "Policy event type";
                }
    
                container match-all {
                  presence
                    "Execute all the matched classes";
                  description
                    "Execute all the matched classes";
                }  // container match-all
    
                container match-first {
                  presence
                    "Execute only the first matched class";
                  description
                    "Execute only the first matched class";
                }  // container match-first
    
                list class {
                  key "name type";
                  description "Class-map";
                  leaf name {
                    type string {
                      pattern
                        "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                    }
                    description
                      "Name of the class-map";
                  }
    
                  leaf type {
                    type enumeration {
                      enum "subscriber-control" {
                        value 4;
                        description
                          "Control Subscriber Classmap.";
                      }
                    }
                    description
                      "The type of classmap";
                  }
    
                  leaf action-strategy {
                    type enumeration {
                      enum "do-all" {
                        value 0;
                        description
                          "Do all actions";
                      }
                      enum "do-until-failure" {
                        value 1;
                        description
                          "Do all actions until failure";
                      }
                      enum "do-until-success" {
                        value 2;
                        description
                          "Do all actions until success";
                      }
                    }
                    description
                      "Strategy to execute class-map actions";
                  }
    
                  list action {
                    key "sequence-number";
                    leaf sequence-number {
                      type uint16 {
                        range "1..65535";
                      }
                      description
                        "Sequence number for this action";
                    }
    
                    uses subscriber-actions;
                  }  // list action
                }  // list class
              }  // list event
            }  // list subscriber-control
    
            list pbr {
              if-feature pmap-type-pbr;
              key "policy-map-name";
              description "PBR policy-map";
              uses policy-map-common;
    
              list class {
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic class-map.";
                    }
                  }
                  description
                    "The type of class-map";
                }
    
                uses pbr-actions;
              }  // list class
            }  // list pbr
    
            list performance-traffic {
              if-feature pmap-type-afmon;
              key "policy-map-name";
              description
                "Performance traffic policy-map";
              uses policy-map-common;
    
              list class {
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic class-map.";
                    }
                  }
                  description
                    "The type of class-map";
                }
    
                uses performance-traffic-actions;
              }  // list class
            }  // list performance-traffic
    
            list qos {
              if-feature pmap-type-qos;
              key "policy-map-name";
              description "QoS policy-map";
              uses policy-map-common;
    
              list class {
                must
                  "admit or
                 bandwidth or bandwidth-remaining or fragment or pause or police or
                 priority or queue-limits or random-detect-ecn or service-fragment or
                 service-policy or set or shape or random-detect-default or
                 random-detect or compress or encap-sequence";
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "qos" {
                      value 1;
                      description
                        "QoS class-map.";
                    }
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic class-map.";
                    }
                  }
                  description
                    "The type of class-map";
                }
    
                uses qos-actions;
              }  // list class
            }  // list qos
    
            list redirect {
              if-feature pmap-type-redirect;
              key "policy-map-name";
              description "Redirect policy-map";
              uses policy-map-common;
    
              list class {
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic class-map.";
                    }
                  }
                  description
                    "The type of class-map";
                }
    
                uses redirect-actions;
              }  // list class
            }  // list redirect
    
            list traffic {
              if-feature pmap-type-traffic;
              key "policy-map-name";
              description "Traffic policy-map";
              uses policy-map-common;
    
              list class {
                key "name type";
                leaf name {
                  type string {
                    pattern
                      "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}";
                  }
                  description
                    "Name of the class-map";
                }
    
                leaf type {
                  type enumeration {
                    enum "traffic" {
                      value 3;
                      description
                        "Traffic class-map.";
                    }
                  }
                  description
                    "The type of class-map";
                }
    
                uses policy-action-compress;
    
                uses policy-action-encap-sequence;
              }  // list class
            }  // list traffic
          }  // container type
        }  // container policy-map
      }  // module Cisco-IOS-XR-um-policymap-classmap-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.