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
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}"; } } 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"; 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"; } container match { description "Configure match criteria for this class."; 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 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 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 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 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)"; } 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 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 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 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 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 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 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"; } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } // container match container match-not { description "Negate match criteria"; 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 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 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 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)"; } 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 } // 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"; 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"; } container match { description "Configure match criteria for this class."; 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"; } 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 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 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 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 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 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 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 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 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 } // container match container match-not { description "Negate match criteria"; 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"; } 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 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 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 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 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 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 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 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 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 } // 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"; 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"; } container match { description "Configure match criteria for this class."; 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 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 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 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)"; } 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 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 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 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 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 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 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"; } 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 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 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 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 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 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 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 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 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 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 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 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 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 } // container match container match-not { description "Negate match criteria"; 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 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 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 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)"; } 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 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 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 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 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 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"; } 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 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 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 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 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 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 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 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 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 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 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 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 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 } // 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"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } container activate { description "Activate"; container dynamic-template { description "actions related to dynamic templates"; leaf template-name { type string; description "Dynamic template name"; } 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 } // 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"; } 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 } // container dynamic-template } // container deactivate container authenticate { if-feature action-authenticate; description "Authentication related configuration"; 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 } // container authenticate container authorize { if-feature action-authorize; description "Authorize"; 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 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 } // list action } // list class } // list event } // list subscriber-control list pbr { if-feature pmap-type-pbr; key "policy-map-name"; description "PBR policy-map"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } 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 } // list class } // list pbr list performance-traffic { if-feature pmap-type-afmon; key "policy-map-name"; description "Performance traffic policy-map"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } 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 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"; } 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 } // list class } // list performance-traffic list qos { if-feature pmap-type-qos; key "policy-map-name"; description "QoS policy-map"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } 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 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 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"; } 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"; 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"; 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."; } } // container set } // container conform-action container exceed-action { description "Action for exceeding traffic"; 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"; 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."; } } // container set } // container exceed-action container violate-action { description "Action for violating traffic"; 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"; 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."; } } // container set } // 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"; } 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."; } } // 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 } // list class } // list qos list redirect { if-feature pmap-type-redirect; key "policy-map-name"; description "Redirect policy-map"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } 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 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"; } container priority { presence "Test command"; description "Test command"; } // container priority } // list class } // list redirect list traffic { if-feature pmap-type-traffic; key "policy-map-name"; description "Traffic policy-map"; leaf policy-map-name { type string; description "Name of the policymap"; } leaf description { type string; description "Set description for this policy-map"; } 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"; } 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 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"; } } // list class } // list traffic } // container type } // container policy-map } // module Cisco-IOS-XR-um-policymap-classmap-cfg
© 2023 YumaWorks, Inc. All rights reserved.