This module contains a collection of YANG definitions for Cisco IOS-XR ASR9k policy manager configuration. Copyright (c) 2013, ...
Version: 2021-02-15
module Cisco-IOS-XR-infra-policymgr-cfg { yang-version 1; namespace "http://cisco.com/ns/yang/Cisco-IOS-XR-infra-policymgr-cfg"; prefix infra-policymgr-cfg; import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix ietf; } import cisco-semver { prefix semver; } organization "Cisco Systems, Inc."; contact "Cisco Systems, Inc. Customer Service Postal: 170 West Tasman Drive San Jose, CA 95134 Tel: +1 800 553-NETS E-mail: cs-yang@cisco.com"; description "This module contains a collection of YANG definitions for Cisco IOS-XR ASR9k policy manager configuration. Copyright (c) 2013, 2015-2021 by Cisco Systems, Inc. All rights reserved."; revision "2021-02-15" { description "IOS XR 7.3.2 revision. 2021-01-06 IOS XR 7.3.2 revision."; } revision "2020-06-05" { description "IOS XR 7.2.1 revision. 2020-05-17 IOS XR 7.2.1 revision. 2020-04-29 IOS XR 7.2.1 revision. 2020-04-06 IOS XR 7.2.1 revision. 2020-01-30 IOS XR 7.2.1 revision. 2019-12-18 IOS XR 7.2.1 revision."; } revision "2019-11-21" { description "IOS XR 7.1.1 revision. 2019-11-03 IOS XR 7.1.1 revision. 2019-10-04 IOS XR 7.1.1 revision."; } revision "2019-07-31" { description "IOS XR 7.0.1 revision."; } revision "2019-07-23" { description "IOS XR 7.0.1 revision."; } revision "2019-07-15" { description "IOS XR 7.0.1 revision."; } revision "2019-07-11" { description "IOS XR 7.0.1 revision."; } revision "2019-07-02" { description "IOS XR 7.1.1 revision."; } revision "2018-11-22" { description "IOS XR 7.0.1 revision."; } revision "2018-11-02" { description "IOS XR 7.1.1 revision."; } revision "2018-09-10" { description "IOS XR 7.0.1 revision."; } revision "2018-06-29" { description "IOS XR 7.0.1 revision."; } revision "2018-03-02" { description "IOS XR 6.5.1 revision."; } revision "2017-12-11" { description "IOS XR 6.4.1 revision."; } revision "2017-06-27" { description "IOS XR 6.4.1 revision."; } revision "2017-05-15" { description "IOS XR 6.3.1 revision."; } revision "2017-04-03" { description "IOS XR 6.3.1 revision."; } revision "2017-03-03" { description "IOS XR 6.3.1 revision."; } revision "2017-02-15" { description "IOS XR 6.2.1 revision."; } revision "2017-02-08" { description "IOS XR 6.2.1 revision."; } revision "2016-12-15" { description "IOS XR 6.2.1 revision."; } revision "2015-05-18" { description "IOS XR 5.3.2 revision."; } revision "2013-07-22" { description "Initial revision."; } semver:module-version "4.0.0"; semver:module-version "3.0.0"; semver:module-version "2.0.0"; typedef Class-map-type { type enumeration { enum "qos" { value 1; description "QoS Classmap."; } enum "traffic" { value 3; description "TRAFFIC Classmap."; } enum "subscriber-control" { value 4; description "Control Subscriber Classmap."; } } description "Policy manager class-map type."; } typedef Alarm-severity { type string { pattern "(informational)|(notification)|(warning)|(error)|(critical)|(alert)|(emergency)"; } description "Alaram severity types."; } typedef Policy-map-type { type enumeration { enum "qos" { value 1; description "QoS Policymap"; } enum "pbr" { value 2; description "PBR Policymap"; } enum "traffic" { value 3; description "TRAFFIC Policymap"; } enum "subscriber-control" { value 4; description "SUBSCRIBER-CONTROL Policymap"; } enum "accounting" { value 5; description "Accounting Policymap"; } enum "redirect" { value 6; description "REDIRECT Policy map"; } enum "flow-monitor" { value 7; description "FLOWMONITOR Policy map"; } } description "Policy manager policy-map type."; } typedef Service-policy-type { type string { pattern "(PBR)|(QOS)|(REDIRECT)|(TRAFFIC)|(pbr)|(qos)|(redirect)|(traffic)"; } description "Policy manager service-policy type."; } typedef Bandwidth-units { type string { pattern "(bps)|(kbps)|(mbps)|(gbps)|(percent)|(per-million)|(per-thousand)"; } description "Supported units for bandwidth. bps - units in Bits/Sec kbps - units in KiloBits/Sec mbps - units in MegaBits/Sec gbps - units in GigaBits/Sec percent - units in Percentage per-million - parts per-million bandwidth value per-thousand - Parts per-thousand bandwidth value"; } typedef Bandwidth-remaining-units { type string { pattern "(percent)|(ratio)"; } description "Supported units for bandwidth remaining. percent - units in Percentage ratio - units in Ratio"; } typedef Rate-units { type string { pattern "(bps)|(kbps)|(mbps)|(gbps)|(pps)|(percent)|(cellsps)"; } description "Supported units for police rate or peak-rate. bps - units in Bits/Sec kbps - units in KiloBits/Sec mbps - units in MegaBits/Sec gbps - units in GigaBits/Sec pps - units in Packets/Sec percent - units in Percentage cellsps - units in Cells/Sec"; } typedef Police-Rate-units { type string { pattern "(bps)|(kbps)|(mbps)|(gbps)|(pps)|(percent)|(cellsps)|(per-thousand)|(per-million)"; } description "Supported units for police rate or peak-rate. bps - units in Bits/Sec kbps - units in KiloBits/Sec mbps - units in MegaBits/Sec gbps - units in GigaBits/Sec pps - units in Packets/Sec percent - units in Percentage cellsps - units in Cells/Sec per-million - parts per-million bandwidth value per-thousand - Parts per-thousand bandwidth value"; } typedef Cac-rate-units { type string { pattern "(bps)|(kbps)|(mbps)|(gbps)|(cellsps)"; } description "Supported units for CAC rate or flow-rate. bps - units in Bits/Sec kbps - units in KiloBits/Sec mbps - units in MegaBits/Sec gbps - units in GigaBits/Sec cellsps - units in Cells/Sec"; } typedef Queue-units { type string { pattern "(bytes)|(kbytes)|(mbytes)|(gbytes)|(us)|(ms)|(packets)|(cells)|(percent)"; } description "Supported units for queue. bytes - units in Bytes kbytes - units in KiloBytes mbytes - units in MegaBytes gbytes - units in Gigabytes us - units in Microseconds ms - units in Milliseconds packets - units in Packets cells - units in Cells percent - units in Percent"; } typedef Threshold-units { type string { pattern "(bytes)|(kbytes)|(mbytes)|(gbytes)|(us)|(ms)|(packets)|(cells)"; } description "Supported units for RED threshold. bytes - units in Bytes kbytes - units in KiloBytes mbytes - units in MegaBytes gbytes - units in GigaBytes us - units in Microseconds ms - units in Milliseconds packets - units in Packets cells - units in Cells"; } typedef Pfc-units { type string { pattern "(bytes)|(kbytes)|(mbytes)|(gbytes)|(us)|(ms)|(packets)|(cells)"; } description "Supported units for pfc. bytes - units in Bytes kbytes - units in KiloBytes mbytes - units in MegaBytes gbytes - units in Gigabytes us - units in Microseconds ms - units in Milliseconds packets - units in Packets cells - units in Cells"; } typedef Float-str { type string { pattern "[0-9]+(\\.[0-9]+)?"; } description "Floating point number string representation."; } typedef Dscp { type string { pattern "([0-9]|[1-5][0-9]|6[0-3])|(af11)|(af12)|(af13)|(af21)|(af22)|(af23)|(af31)|(af32)|(af33)|(af41)|(af42)|(af43)|(ef)|(default)|(cs1)|(cs2)|(cs3)|(cs4)|(cs5)|(cs6)|(cs7)"; } description "DSCP value string representation. Should be single value 0..63 or predefined string."; } typedef Dscp-range { type string { pattern "([0-9]|[1-5][0-9]|6[0-3])|(([0-9]|[1-5][0-9]|6[0-3])-([0-9]|[1-5][0-9]|6[0-3]))|(af11)|(af12)|(af13)|(af21)|(af22)|(af23)|(af31)|(af32)|(af33)|(af41)|(af42)|(af43)|(ef)|(default)|(cs1)|(cs2)|(cs3)|(cs4)|(cs5)|(cs6)|(cs7)"; } description "DSCP value or range string representation. Should be single value 0..63 or predefined string or range <min>-<max>."; } typedef Num-range { type string { pattern "(\\d+)|(\\d+\\-\\d+)"; } description "Numeric value or range string representation. Should be single value or range <min>-<max>."; } typedef Protocol { type string { pattern "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\-([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))|((ahp)|(dhcpv4)|(dhcpv6)|(eigrp)|(esp)|(gre)|(icmp)|(igmp)|(igrp)|(ipinip)|(ipv4)|(ipv6)|(ipv6icmp)|(mpls)|(nos)|(ospf)|(pcp)|(pim)|(ppp)|(sctp)|(tcp)|(udp))"; } description "Numeric value or range or string representation. Should be single value or range 0..255."; } typedef Subs-Protocol { type string { pattern "(dhcpv4)|(dhcpv6)|(ppp)"; } description "Should be one of the 3 values."; } typedef Ethertype { type string { pattern "((153[6-9]|15[4-9][0-9]|1[6-9][0-9][0-9]|[2-9][0-9][0-9][0-9])|([1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9])|(65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]))|((arp)|(ipv4)|(ipv6))"; } description "Numeric value or string representation. Should be single value 1536..65535 or predefined string."; } typedef shape-value { type union { type string { pattern "[$][a-zA-Z0-9][a-zA-Z0-9\\._@%+:\\-]{0,32}[ ][=][ ]\\d{1,10}"; } type uint32 { range "1..4294967295"; } } description "The shape can be either given as $var=<value> or <value>. The range is from 1..4294967295"; } typedef Precedence { type union { type uint8 { range "0..7"; } type string { pattern "(critical)|(flash)|(flash-override)|(immediate)|(internet)|(network)|(priority)|(routine)"; } } description "Precedence value. critical Critical precedence (5) flash Flash precedence (3) flash-override Flash override precedence (4) immediate Immediate precedence (2) internet Internetwork control precedence (6) network Network control precedence (7) priority Priority precedence (1) routine Routine precedence (0)"; } typedef Cos { type uint8 { range "0..7"; } description "Cos value."; } typedef vrf-name-length { type string { length "1..32"; } description "length of the vrf name."; } typedef Idle-timeout-number { type uint16 { range "10..2550"; } units "seconds"; description "String that idle-timeout can take."; } typedef Idle-timeout-string { type string { pattern "(None)|(none)"; } description "This flow does not expire."; } typedef Idle-timeout { type union { type Idle-timeout-number; type Idle-timeout-string; } description "Idle timeout after which flow expires"; } typedef Encap-Seq-number { type uint16 { range "1..15"; } description "Encap seq number"; } typedef Encap-Seq-string { type string { pattern "(None)|(none)"; } description "No encap sequence."; } typedef Encap-sequence-type { type union { type Encap-Seq-number; type Encap-Seq-string; } description "Encap sequence for the policy-map"; } 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 "Denotes Authentication failure event."; } enum "authentication-no-response" { value 3; description "Denotes Authentication no response event."; } enum "authorization-failure" { value 4; description "Denotes Authorization failure event."; } enum "authorization-no-response" { value 5; description "Denotes Authorization no response event."; } enum "credit-exhausted" { value 6; description "Credit exhaustion event."; } enum "exception" { value 7; description "Exception event."; } enum "idle-timeout" { value 8; description "Idle timeout event."; } enum "quota-depleted" { value 9; description "Quota depletion event."; } enum "service-start" { value 10; description "Service start event."; } enum "service-stop" { value 11; description "Service stop event."; } enum "session-activate" { value 12; description "Session activate event."; } enum "session-start" { value 13; description "Session start event."; } enum "session-stop" { value 14; description "Session stop event."; } enum "timer-expiry" { value 15; description "Timer expiry event."; } enum "session-identity-change" { value 16; description "Session identity change event."; } enum "authorize-dhcp-renew" { value 17; description "Authorize dhcp renew packet event."; } enum "session-umi-report" { value 18; description "Session UMI report event."; } enum "session-established" { value 19; description "Session established event."; } enum "prepaid-quota-rejected" { value 20; description "Prepaid quota rejected."; } enum "prepaid-start-failed" { value 21; description "prepaid start request failed for the session."; } } description "Service Policy Event type."; } typedef Execution-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 the Policy action."; } typedef Authorize-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 "source-address-ipv4" { value 3; description "Authorize source IPv4 address."; } enum "source-address-ipv6" { value 4; description "Authorize source IPv6 address."; } enum "source-address-mac" { value 5; description "Authorize source MAC address."; } enum "username" { value 6; description "Authorize username."; } } description "Different parameters for Authorization"; } typedef dhcp-client-id-options { type string { pattern "(none)|(ascii)|(hex)"; } description "DHCP client Id Flag option."; } grouping MATCH { description "Supported 'match' or 'match-not' actions."; leaf-list ipv4-dscp { type Dscp-range; ordered-by user; description "Match IPv4 DSCP."; } leaf-list ipv6-dscp { type Dscp-range; ordered-by user; description "Match IPv6 DSCP."; } leaf-list dscp { type Dscp-range; ordered-by user; description "Match DSCP."; } leaf-list ipv4-precedence { type Precedence; ordered-by user; description "Match IPv4 precedence."; } leaf-list ipv6-precedence { type Precedence; ordered-by user; description "Match IPv6 precedence."; } leaf-list precedence { type Precedence; ordered-by user; description "Match precedence."; } leaf-list qos-group { type Num-range; ordered-by user; description "Match QoS group. Should be value 0..512 or range."; } leaf-list traffic-class { type Num-range; ordered-by user; description "Match Traffic Class. Should be value 0..63 or range."; } leaf-list cos { type Cos; ordered-by user; description "Match CoS."; } leaf-list inner-cos { type Cos; ordered-by user; description "Match inner CoS."; } leaf dei { type uint8 { range "0..1"; } description "Match DEI bit."; } leaf dei-inner { type uint8 { range "0..1"; } description "Match DEI INNER bit."; } leaf-list protocol { type Protocol; ordered-by user; description "Match protocol."; } leaf-list subs-protocol { type Subs-Protocol; ordered-by user; description "Match subs protocol."; } leaf-list ipv4-acl { type string { length "1..64"; } ordered-by user; description "Match IPv4 ACL."; } leaf-list ipv6-acl { type string { length "1..64"; } ordered-by user; description "Match IPv6 ACL."; } leaf-list ethernet-services-acl { type string { length "1..64"; } ordered-by user; description "Match Ethernet Services"; } leaf-list mpls-experimental-topmost { type Cos; ordered-by user; description "Match MPLS experimental topmost label."; } leaf-list mpls-experimental-imposition { type Cos; ordered-by user; description "Match MPLS experimental imposition label."; } leaf-list discard-class { type Cos; ordered-by user; description "Match discard class."; } leaf-list ipv4-packet-length { type Num-range; ordered-by user; description "Match IPv4 packet length. Should be value 0..65535 or range."; } leaf-list ipv6-packet-length { type Num-range; ordered-by user; description "Match IPv6 packet length. Should be value 0..65535 or range."; } leaf-list packet-length { type Num-range; ordered-by user; description "Match packet length. Should be value 0..65535 or range."; } leaf-list mpls-disposition-ipv4-access-list { type string { length "1..32"; } ordered-by user; description "Match MPLS Label Disposition IPv4 access list."; } leaf-list mpls-disposition-ipv6-access-list { type string { length "1..32"; } ordered-by user; description "Match MPLS Label Disposition IPv6 access list."; } leaf-list mpls-disp-class-map { type string { length "1..32"; pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]*"; } ordered-by user; description "Match MPLS Label Disposition class-map"; } leaf-list vlan { type Num-range; ordered-by user; description "Match VLAN ID."; } leaf-list inner-vlan { type Num-range; ordered-by user; description "Match inner VLAN ID."; } leaf-list flow-tag { type Num-range; ordered-by user; description "Match flow-tag. Should be value 1..63 or range."; } leaf-list ethertype { type Ethertype; ordered-by user; description "Match Ethertype."; } list destination-address-ipv4 { key "address netmask"; description "Match destination 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 destination-address-ipv4 list destination-address-ipv6 { key "address prefix-length"; description "Match destination 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 destination-address-ipv6 leaf-list destination-port { type Num-range; ordered-by user; description "Match destination port. Should be value 0..65535 or range."; } leaf-list fragment-type { type string { pattern "(dont-fragment)|(first-fragment)|(is-fragment)|(last-fragment)"; } max-elements 4; ordered-by user; description "Match fragment type for a packet."; } leaf-list frame-relay-dlci { type Num-range; ordered-by user; description "Match frame-relay DLCI value. Should be value 16..1007 or range."; } leaf-list fr-de { type uint8 { range "0..1"; } description "Match FrameRelay DE bit."; } leaf-list icmpv4-code { type Num-range; ordered-by user; description "Match IPv4 ICMP code. Should be value 0..255 or range."; } leaf-list icmpv4-type { type Num-range; ordered-by user; description "Match IPv4 ICMP type. Should be value 0..255 or range."; } leaf-list icmpv6-code { type Num-range; ordered-by user; description "Match IPv6 ICMP code. Should be value 0..255 or range."; } leaf-list icmpv6-type { type Num-range; ordered-by user; description "Match IPv6 ICMP type. Should be value 0..255 or range."; } list source-address-ipv4 { key "address netmask"; description "Match source 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 source-address-ipv4 list source-address-ipv6 { key "address prefix-length"; description "Match source 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 source-address-ipv6 leaf-list source-port { type Num-range; ordered-by user; description "Match source port. Should be value 0..65535 or range."; } leaf tcp-flag { type uint16 { range "0..4095"; } description "Match TCP flags."; } leaf authen-status { type string { pattern "(authenticated)|(unauthenticated)"; } description "Match authentication status."; } leaf-list circuit-id { type string { length "1..32"; } ordered-by user; description "Match Circuit ID."; } leaf-list circuit-id-regex { type string { length "1..32"; } ordered-by user; description "Match Circuit id regular expression"; } list dhcp-client-id { key "client-id flag"; description "Match dhcp client ID."; leaf client-id { type string { length "1..32"; } description "Dhcp client Id."; } leaf flag { type dhcp-client-id-options; description "Dhcp client id Ascii/Hex"; } } // list dhcp-client-id list dhcp-client-id-regex { key "client-id flag"; description "Match dhcp client id regular expression"; leaf client-id { type string { length "1..32"; } description "Dhcp client id regular expression."; } leaf flag { type dhcp-client-id-options; description "Dhcp client Id regex Ascii/Hex."; } } // list dhcp-client-id-regex list domain-name { key "name format"; description "Match domain name."; leaf name { type string { length "1..32"; } description "Domain name or regular expression."; } leaf format { type string { length "1..32"; } description "Domain-format name."; } } // list domain-name list domain-name-regex { key "regex format"; description "Match domain name."; leaf regex { type string { length "1..32"; } description "Domain name or regular expression."; } leaf format { type string { length "1..32"; } description "Domain-format name."; } } // list domain-name-regex leaf-list remote-id { type string { length "1..32"; } ordered-by user; description "Match remote ID."; } leaf-list remote-id-regex { type string { length "1..32"; } ordered-by user; description "Match remote id regular expression"; } leaf-list service-name { type string { length "1..32"; } ordered-by user; description "Match servicve name."; } leaf-list service-name-regex { type string { length "1..32"; } ordered-by user; description "Match servicve name regular expression."; } leaf-list timer { type string { length "1..32"; } ordered-by user; description "Match timer."; } leaf-list timer-regex { type string { length "1..32"; } ordered-by user; description "Match timer regular expression."; } leaf-list user-name { type string { length "1..32"; } ordered-by user; description "Match user name."; } leaf-list user-name-regex { type string { length "1..32"; } ordered-by user; description "Match user name regular expression."; } leaf source-mac { type ietf:mac-address; description "Match source MAC address. Format is e.g. ff:a6:8e:00:01:02."; } leaf destination-mac { type ietf:mac-address; description "Match destination MAC address. Format is e.g. ff:a6:8e:00:01:02."; } leaf vpls-control { type empty; description "Match VPLS control"; } leaf vpls-broadcast { type empty; description "Match VPLS Broadcast"; } leaf vpls-multicast { type empty; description "Match VPLS Multicast"; } leaf vpls-known { type empty; description "Match VPLS Known"; } leaf vpls-unknown { type empty; description "Match VPLS Unknown"; } } // grouping MATCH grouping MATCH-MATCHNOT { description "match or match-not containers."; container match { description "Match rules."; uses MATCH; leaf-list atm-clp { type uint8 { range "0..1"; } ordered-by user; description "Match ATM CLP bit."; } leaf atm-oam { type empty; description "Match ATM OAM."; } leaf cac-admit { type empty; description "Match CAC admitted."; } leaf cac-unadmit { type empty; description "Match CAC unadmitted."; } container flow { description "Match flow."; leaf-list flow-key { type string { pattern "(SourceIP)|(DestinationIP)|(5Tuple)"; } ordered-by user; description "Configure the flow-key parameters."; } container flow-cache { description "Configure the flow-cache parameters"; leaf idle-timeout { type Idle-timeout; description "Maximum time of inactivity for a flow."; } leaf max-count { type uint16 { range "1..65535"; } description "Configure the max-count for the flow-key"; } } // container flow-cache } // container flow } // container match container match-not { description "Match not rules."; uses MATCH; } // container match-not } // grouping MATCH-MATCHNOT grouping CLASS-MAP-RULE { description "Class-map rule"; choice class-map-mode-match { default "class-map-mode-match-any"; leaf class-map-mode-match-any { type empty; description "Match any match criteria"; } leaf class-map-mode-match-all { type empty; description "Match all match criteria."; } } // choice class-map-mode-match uses MATCH-MATCHNOT; leaf description { type string; description "Description for this policy-map."; } } // grouping CLASS-MAP-RULE grouping POLICY-MARK { description "Policy packet marking actions."; leaf dscp { type Dscp; description "Marks a packet by setting the DSCP in the ToS byte."; } 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."; } leaf traffic-class { type uint8 { range "0..63"; } description "Sets the Traffic class identifiers on IPv4 or MPLS packets."; } leaf discard-class { type Cos; 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 forward-class { type uint8 { range "0..7"; } description "Sets the forward class."; } leaf df { type uint8 { range "0..1"; } description "Set DF bit."; } leaf cos { type Cos; 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 inner-cos { type Cos; description "Set inner cos."; } leaf precedence { type Precedence; description "Sets the precedence value in the IP header."; } leaf precedence-tunnel { type Precedence; description "Sets the precedence tunnel value for ipsec."; } leaf mpls-experimental-top-most { type uint8 { range "0..7"; } description "Sets the experimental value of the MPLS packet top-most labels."; } leaf mpls-experimental-imposition { type Cos; 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 srp-priority { type uint8 { range "0..7"; } description "Sets the spatial reuse protocol priority value of an outgoing packet."; } leaf fr-de { type uint8 { range "0..1"; } description "Set FrameRelay DE bit."; } leaf dei { type uint8 { range "0..1"; } description "Set DEI bit."; } leaf dei-imposition { type uint8 { range "0..1"; } description "Set DEI imposition bit."; } leaf source-address { type inet:ipv4-address-no-zone; description "Set the Source IPv4 address."; } leaf destination-address { type inet:ipv4-address-no-zone; description "Set the Destination IPv4 address."; } leaf atm-clp { type empty; description "Set atm cell-loss-priority bit."; } leaf dscp-tunnel { type Dscp; description "Marks a packet by setting DSCP in the tunnel header. This is specific to ipsec tunnels"; } } // grouping POLICY-MARK grouping CAC-RATE-VALUE { description "CAC rate value."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Rate value."; } leaf units { type Cac-rate-units; description "Rate units."; } } // grouping CAC-RATE-VALUE grouping POLICE-ACTION { description "Police action."; leaf Transmit { type empty; description "Police action transmit."; } leaf drop { type empty; description "Police action drop."; } container set { description "Police action packet marking."; uses POLICY-MARK; } // container set } // grouping POLICE-ACTION grouping POLICY-MAP-RULE { description "Class-map rule."; list event { key "event-type"; description "Policy event."; leaf event-type { type Event-type; description "Service Policy Event type."; } leaf event-mode-match-all { when "count(../event-mode-match-first) = 0" { description "Event MUST have only one mode."; } type empty; description "Execute all the matched classes."; } leaf event-mode-match-first { when "count(../event-mode-match-all) = 0" { description "Event MUST have only one mode."; } type empty; description "Execute only the first matched class."; } list class { key "class-name class-type"; description "Class-map rule."; leaf class-name { type string { pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}"; } description "Name of class."; } leaf class-type { type Class-map-type; description "Type of class."; } leaf class-execution-strategy { type Execution-strategy; description "Strategy to execute Class-map"; } list action-rule { key "action-sequence-number"; description "Action rule parameters"; leaf action-sequence-number { type uint16 { range "1..65535"; } description "Sequence number for this action."; } container activate-dynamic-template { presence "This container is present only if actions is related to dynamic templates."; description "Activate dynamically created templates."; leaf name { type string; mandatory true; description "Dynamic template name."; } leaf aaa-list { type string; description "Name of the AAA method list."; } } // container activate-dynamic-template container authenticate { description "Authentication related configuration."; leaf aaa-list { type string; description "Name of the AAA method list."; } } // container authenticate container authorize { must "format or identifier" { description "format or identifier must be set."; } presence "This container is present only if actions is related to authorization."; description "Authorize using format or identifier or password"; leaf aaa-list { type string; mandatory true; description "Name of the AAA method list."; } leaf format { type string; description "Specify an Authorize format name."; } leaf identifier { type Authorize-identifier; description "Specify an Authorize format name."; } leaf password { type string; mandatory true; description "Specify a password to be used for AAA request."; } } // container authorize container deactivate-dynamic-template { presence "This container is present only if actions is related to dynamic templates."; description "Deactivate dynamically created templates."; leaf name { type string; mandatory true; description "Dynamic template name."; } leaf aaa-list { type string; description "Name of the AAA method list."; } } // container deactivate-dynamic-template leaf disconnect { type empty; description "Disconnect session."; } leaf monitor { type empty; description "Monitor session."; } leaf service-deactivate { type empty; description "deactivate service on prepaid start failure."; } container set-timer { presence "This container is present only if actions is related to timer."; description "Set a timer to execute a rule on its expiry"; leaf timer-name { type string; mandatory true; description "Name of the timer."; } leaf timer-value { type uint32 { range "1..4294967295"; } units "minutes"; mandatory true; description "Timer value in minutes."; } } // container set-timer container stop-timer { description "Disable timer before it expires."; leaf timer-name { type string; description "Name of the timer."; } } // container stop-timer } // list action-rule } // list class } // list event list policy-map-rule { key "class-name class-type"; description "Class-map rule."; leaf class-name { type string { pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}"; } description "Name of class-map."; } leaf class-type { type Class-map-type; description "Type of class-map."; } container shape { must "rate" { description "rate container must be present."; } description "Policy action shape."; container rate { description "Rate configuration."; leaf value { type shape-value; must "../unit" { description "unit must be set."; } description "Shape bandwidth value."; } leaf unit { type Bandwidth-units; description "Shape bandwidth units."; } } // container rate container burst { description "Burst size configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Burst size value."; } leaf units { type Threshold-units; description "Burst size units."; } } // container burst } // container shape container min-bandwidth { description "Policy action minimum bandwidth queue."; leaf value { type uint32 { range "1..4294967295"; } must "../unit" { description "unit must be set."; } description "Minimum bandwidth value."; } leaf unit { type Bandwidth-units; description "Minimum bandwidth units."; } } // container min-bandwidth container bandwidth-remaining { description "Policy action bandwidth remaining queue."; leaf value { type uint32 { range "0..4294967295"; } must "../unit" { description "unit must be set."; } description "Remaining bandwidth value."; } leaf unit { type Bandwidth-remaining-units; description "Remaining bandwidth units."; } } // container bandwidth-remaining list queue-limit { key "value unit"; description "Policy action queue limit."; leaf value { type uint32 { range "1..4294967295"; } must "../unit" { description "unit must be set."; } description "Remaining bandwidth value."; } leaf unit { type Queue-units; description "Remaining bandwidth units."; } leaf-list discard-class { type Cos; description "queue-limit discard-class value."; } } // list queue-limit container pfc { description "Policy action pfc."; leaf pfc-pause-set { type empty; description "Pfc Pause set value."; } container pfc-buffer-size { description "PFC Buffer Size."; leaf value { type uint32 { range "1..4294967295"; } must "../unit" { description "unit must be set."; } description "Pfc buffer size value."; } leaf unit { type Pfc-units; description "Pfc buffer size units."; } } // container pfc-buffer-size container pfc-pause-threshold { description "PFC Pause Threshold."; leaf value { type uint32 { range "1..4294967295"; } must "../unit" { description "unit must be set."; } description "Pfc pause threshold value."; } leaf unit { type Pfc-units; description "Pfc pause threshold units."; } } // container pfc-pause-threshold container pfc-resume-threshold { description "PFC Resume Threshold."; leaf value { type uint32 { range "1..4294967295"; } must "../unit" { description "unit must be set."; } description "Pfc resume threshold value."; } leaf unit { type Pfc-units; description "Pfc resume threshold units."; } } // container pfc-resume-threshold } // container pfc leaf priority-level { type uint8 { range "1..7"; } description "Priority level of the policy-map rule"; } leaf default-red { type empty; description "Default random early detection"; } leaf ecn-red { type empty; description "ECN based random early detection"; } list random-detect { key "threshold-min-value threshold-min-units threshold-max-value threshold-max-units"; description "Random early detection. All RED profiles in a class must be based on the same field."; leaf threshold-min-value { type uint32 { range "0..1073741823"; } description "Minimum RED threshold value."; } leaf threshold-min-units { type Threshold-units; description "Minimum RED threshold units."; } leaf threshold-max-value { type uint32 { range "0..1073741823"; } description "Maximum RED threshold value."; } leaf threshold-max-units { type Threshold-units; description "Maximum RED threshold units."; } leaf probability { type uint32 { range "0..4294967295"; } description "Drop Probability of RED"; } leaf-list cos { type Cos; ordered-by user; description "WRED based on CoS."; } leaf-list discard-class { type Cos; ordered-by user; description "WRED based on discard class."; } leaf-list dscp { type Dscp-range; ordered-by user; description "WRED based on DSCP."; } leaf-list mpls-exp { type Cos; ordered-by user; description "MPLS Experimental value based WRED."; } leaf-list precedence { type Precedence; ordered-by user; description "WRED based on precedence."; } leaf-list dei { type uint8 { range "0..1"; } ordered-by user; description "DEI based WRED. Should be value 0..1."; } } // list random-detect container set { description "Policy action packet marking."; uses POLICY-MARK; } // container set leaf encap-sequence { type Encap-sequence-type; description "Configure encap sequence for the policy-map."; } container police { description "Configures traffic policing action."; container bucket { description "Bucket related configuration."; container shared { description "Shared bucket configuration."; leaf name { type string; description "Shared Bucket name."; } container rate { description "Rate configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Rate value."; } leaf units { type Police-Rate-units; description "Rate units."; } } // container rate container peak-rate { description "Peak rate configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Peak rate value."; } leaf units { type Rate-units; description "Peak rate units."; } } // container peak-rate container burst { description "Burst configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Burst value."; } leaf units { type Threshold-units; description "Burst units."; } } // container burst container peak-burst { description "Peak burst configuration."; leaf value { type uint32; must "../units" { description "units must be set."; } description "Peak burst value."; } leaf units { type Threshold-units; description "Peak burst units."; } } // container peak-burst } // container shared container referred { description "Referred bucket related configuration"; leaf name { type string; description "Referred bucket name"; } } // container referred } // container bucket container rate { description "Rate configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Rate value."; } leaf units { type Police-Rate-units; description "Rate units."; } } // container rate container peak-rate { description "Peak rate configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Peak rate value."; } leaf units { type Rate-units; description "Peak rate units."; } } // container peak-rate container burst { description "Burst configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Burst value."; } leaf units { type Threshold-units; description "Burst units."; } } // container burst container peak-burst { description "Peak burst configuration."; leaf value { type uint32 { range "1..4294967295"; } must "../units" { description "units must be set."; } description "Peak burst value."; } leaf units { type Threshold-units; description "Peak burst units."; } } // container peak-burst container conform-action { description "Configures the action to take on packets that conform to the rate limit."; uses POLICE-ACTION; } // container conform-action leaf conform-color { type string; description "Configures the class that classifies the packets that conform"; } leaf exceed-color { type string; description "Configures the class that classifies the packets that conform"; } container exceed-action { description "Configures the action to take on packets that exceed the rate limit."; uses POLICE-ACTION; } // container exceed-action container violate-action { description "Configures the action to take on packets that violate the rate limit."; uses POLICE-ACTION; } // container violate-action } // container police container compress { description "IP header compression"; container header { container ip { presence "IP header compression"; } // container ip } // container header } // container compress container service-policy { description "Configure a child service policy."; leaf policy-name { type string { pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}"; } description "Name of service-policy."; } leaf type { type Service-policy-type; description "Type of service-policy."; } } // container service-policy container cac-local { description "Policy action CAC."; container rate { description "The rate allocated for all flows."; uses CAC-RATE-VALUE; } // container rate container flow-rate { description "The rate allocated per flow."; uses CAC-RATE-VALUE; } // container flow-rate leaf flow-idle-timeout { type Idle-timeout; description "The interval after which a flow is removed, if there is no activity. If timeout is 0 this flow does not expire."; } } // container cac-local container flow-params { description "Policy flow monitoring action."; leaf max-flow { type uint16 { range "0..4096"; } description "Max simultaneous flows monitored per policy class"; } leaf interval-duration { type uint32 { range "10..600"; } units "seconds"; description "Monitored interval duration."; } leaf history { type uint32 { range "1..60"; } description "Keep stats/metrics on box for so many intervals."; } leaf timeout { type uint32 { range "2..60"; } units "seconds"; description "Declare a flow dead if no packets received in so much time"; } } // container flow-params container metrics-ipcbr { description "Policy IP-CBR metric action."; container rate { description "Nominal per-flow data rate."; leaf layer3 { type uint32; units "bps"; description "Nominal rate specified at the L3 (IP)."; } leaf packet { type uint32 { range "1..4294967294"; } units "pps"; description "Nominal IP layer packet rate (in pps)."; } leaf media { type uint32 { range "1..3000000000"; } units "bps"; description "Nominal data rate of the media flow (ip payload)."; } } // container rate container media-packet { description "Media-packet structure."; leaf size { type uint16 { range "1..65535"; } units "bytes"; description "Nominal size of the media-packet."; } leaf count-in-layer3 { type uint8 { range "1..64"; } units "packets"; description "Nominal number of media packets in an IP payload."; } } // container media-packet } // container metrics-ipcbr container react { description "Policy action react."; leaf descrition { type string; description "String describing the react statement."; } container action { description "Action on alert."; leaf syslog { type empty; description "Syslog."; } leaf snmp { type empty; description "SNMP."; } } // container action container alarm { description "Alaram settings."; container type { description "Alarm type."; leaf discrete { type empty; description "Discrete alarm type."; } leaf group-count { type uint16 { range "1..65535"; } units "number of flows"; description "Number of flows to reach before triggering alarm"; } leaf group-percent { type uint16 { range "1..100"; } units "percentage"; description "Percent to reach before triggering alarm"; } } // container type leaf severity { type Alarm-severity; description "Severity of the alarm."; } } // container alarm container threshold { description "Alarm threshold settings."; container trigger-value { description "Alarm trigger value settings."; leaf greater-than { type string; description "trigger only if metric is Greater than given value"; } leaf greater-than-equal { type string; description "trigger only if metric is Greater than equal to given value"; } leaf less-than { type string; description "trigger only if metric is Less than given value"; } leaf less-than-equal { type string; description "trigger only if metric is Less than equal given value"; } leaf range { type string; description "Range"; } } // container trigger-value container trigger-type { description "Alarm trigger type settings."; leaf immediate { type empty; description "Immediate trigger."; } leaf average { type uint32 { range "1..60"; } description "Trigger averaged over N intervals."; } } // container trigger-type } // container threshold leaf criterion-delay-factor { type empty; description "React criterion Delay factor of the policy-map action"; } leaf criterion-media-stop { type empty; description "React criterion media stop of policy-map action."; } leaf criterion-mrv { type empty; description "React criterion mrv of policy-map action."; } leaf criterion-flow-count { type empty; description "React criterion flow count of policy-map action."; } leaf criterion-packet-rate { type empty; description "React criterion packet rate of policy-map action."; } } // container react leaf http-redirect { type string; description "Policy action http redirect. Redirect to this url."; } leaf pbr-transmit { type empty; description "Policy action PBR transmit."; } leaf drop { type empty; description "Policy action drop."; } leaf decap-gre { type empty; description "Policy action DECAP GRE."; } leaf decap-gue-v1 { type empty; description "Policy action DECAP GRE."; } container pbr-redirect { description "Policy action redirect"; container ipv4 { description "Policy action redirect IPv4"; leaf ipv4-next-hop { type inet:ipv4-address-no-zone; description "IPv4 address."; } leaf vrf { type vrf-name-length; description "IPv4 VRF."; } } // container ipv4 container ipv6 { description "Policy action redirect IPv6"; leaf ipv6-next-hop { type inet:ipv6-address-no-zone; description "IPv6 address."; } leaf vrf { type vrf-name-length; description "IPv6 VRF."; } } // container ipv6 container next-hop { description "Next hop address."; container route-target { description "Destination address of the route"; container ipv4-address { 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."; } } // container ipv4-address leaf as-number { type uint32 { range "1..4294967295"; } description "2-byte/4-byte AS number"; } leaf index { type uint32 { range "0..4294967295"; } description "ASN2:index 2/4 byte (hex or decimal format)"; } } // container route-target } // container next-hop } // container pbr-redirect container pbr-forward { description "Policy action PBR forward."; leaf default { type empty; description "Use system default routing table."; } container next-hop { description "Use specific next-hop. Here we present 5 different combination for the pbf next-hop. 1. vrf with v6 address 2. vrf with v4 address 3. vrf 4. v4 address 5. v6 address"; leaf vrf { type vrf-name-length; description "VRF name."; } leaf ipv4-address { type inet:ipv4-address; description "IPv4 address."; } leaf ipv6-address { type inet:ipv6-address; description "IPv6 address."; } } // container next-hop } // container pbr-forward leaf service-fragment { type string { length "1..64"; } description "Policy action service fragment. Service fragment name"; } leaf fragment { type string { length "1..64"; } description "Policy action fragment. Fragment name"; } container service-function-path { presence "This container is present for service- function-path configuration"; description "Policy action service function path."; leaf path-id { type uint32 { range "1..16777215"; } mandatory true; description "Service function path id."; } leaf index { type uint8 { range "1..255"; } mandatory true; description "Service function path index."; } leaf metadata { type string; description "Service function path metadata name."; } } // container service-function-path container http-enrichment { description "HTTP Enrichment action"; leaf subscribermac { type empty; description "Subscriber Mac of the host"; } leaf subscriberip { type empty; description "Subscriber IP"; } leaf hostname { type empty; description "Name of the host"; } leaf bngidentifierinterface { type empty; description "BNG Identifier Interface"; } } // container http-enrichment } // list policy-map-rule leaf description { type string; description "Description for this policy-map."; } } // grouping POLICY-MAP-RULE container policy-manager { description "Global Policy Manager configuration."; container class-maps { description "Class-maps configuration."; list class-map { key "type name"; description "Class-map configuration."; leaf type { type Class-map-type; description "Type of class-map."; } leaf name { type string { pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}"; } description "Name of class-map."; } uses CLASS-MAP-RULE; } // list class-map } // container class-maps container policy-maps { description "Policy-maps configuration."; list policy-map { key "type name"; description "Policy-map configuration."; leaf type { type Policy-map-type; description "Type of policy-map."; } leaf name { type string { pattern "[a-zA-Z0-9][a-zA-Z0-9\\._@$%+#:=<>\\-]{0,62}"; } description "Name of policy-map."; } uses POLICY-MAP-RULE; } // list policy-map } // container policy-maps } // container policy-manager } // module Cisco-IOS-XR-infra-policymgr-cfg
© 2023 YumaWorks, Inc. All rights reserved.