From 18331f509abc207cdfd83e641584f2c205516d51 Mon Sep 17 00:00:00 2001 From: niamhcore Date: Wed, 7 Apr 2021 11:35:19 +0100 Subject: Fix upload size to be greater than 1MB Issue-ID: CPS-308 Signed-off-by: niamhcore Change-Id: I1de6efa882f85cf6f9054e3ef38ed6e0bd99d7be --- .../rest/controller/AdminRestControllerSpec.groovy | 23 + cps-rest/src/test/resources/model-over-1mb.yang | 28273 +++++++++++++++++++ docker-compose/application.yml | 6 + 3 files changed, 28302 insertions(+) create mode 100644 cps-rest/src/test/resources/model-over-1mb.yang diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy index 3387fb4e1..ab4cf7c1f 100755 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy @@ -153,6 +153,24 @@ class AdminRestControllerSpec extends Specification { response.status == HttpStatus.CREATED.value() } + def 'Create a schema set from a yang file that is greater than 1MB.'() { + given: 'a yang file greater than 1MB' + def multipartFile = createMultipartFileFromResource("/model-over-1mb.yang") + and: 'an endpoint' + def schemaSetEndpoint = "$basePath/v1/dataspaces/$dataspaceName/schema-sets" + when: 'a file is uploaded to the create schema set endpoint' + def response = + mvc.perform( + multipart(schemaSetEndpoint) + .file(multipartFile) + .param('schema-set-name', schemaSetName)) + .andReturn().response + then: 'the associated service method is invoked' + 1 * mockCpsModuleService.createSchemaSet(dataspaceName, schemaSetName, _) + and: 'the response code indicates success' + response.status == HttpStatus.CREATED.value() + } + @Unroll def 'Create schema set from zip archive having #caseDescriptor.'() { given: 'an endpoint' @@ -299,6 +317,11 @@ class AdminRestControllerSpec extends Specification { getClass().getResource(resourcePath).getBytes()) } + def createMultipartFileFromResource(resourcePath) { + return new MockMultipartFile("file", "test.yang", "application/text", + getClass().getResource(resourcePath).getBytes()) + } + def createMultipartFileForIOException(extension) { def multipartFile = Mock(MockMultipartFile) multipartFile.getOriginalFilename() >> "TEST." + extension diff --git a/cps-rest/src/test/resources/model-over-1mb.yang b/cps-rest/src/test/resources/model-over-1mb.yang new file mode 100644 index 000000000..a92637b5c --- /dev/null +++ b/cps-rest/src/test/resources/model-over-1mb.yang @@ -0,0 +1,28273 @@ +submodule nokia-conf-groups { + + yang-version "1.1"; + + belongs-to nokia-conf { prefix "conf"; } + + import ietf-yang-types { prefix "yang"; } + import nokia-sros-yang-extensions { prefix "sros-ext"; } + import nokia-types-bgp { prefix "types-bgp"; } + import nokia-types-card { prefix "types-card"; } + import nokia-types-cellular { prefix "types-cellular"; } + import nokia-types-cflowd { prefix "types-cflowd"; } + import nokia-types-diameter { prefix "types-diam"; } + import nokia-types-eth-cfm { prefix "types-eth-cfm"; } + import nokia-types-filter { prefix "types-filter"; } + import nokia-types-igmp { prefix "types-igmp"; } + import nokia-types-igp { prefix "types-igp"; } + import nokia-types-ipsec { prefix "types-ipsec"; } + import nokia-types-isa { prefix "types-isa"; } + import nokia-types-isis { prefix "types-isis"; } + import nokia-types-l2tp { prefix "types-l2tp"; } + import nokia-types-lldp { prefix "types-lldp"; } + import nokia-types-log { prefix "types-log"; } + import nokia-types-mcast-cac { prefix "types-mcast-cac"; } + import nokia-types-mpls { prefix "types-mpls"; } + import nokia-types-nat { prefix "types-nat"; } + import nokia-types-oam { prefix "types-oam"; } + import nokia-types-port { prefix "types-port"; } + import nokia-types-ppp { prefix "types-ppp"; } + import nokia-types-ptp { prefix "types-ptp"; } + import nokia-types-qos { prefix "types-qos"; } + import nokia-types-router { prefix "types-router"; } + import nokia-types-rsvp { prefix "types-rsvp"; } + import nokia-types-security { prefix "types-security"; } + import nokia-types-services { prefix "types-services"; } + import nokia-types-sros { prefix "types-sros"; } + import nokia-types-subscriber-mgmt { prefix "types-submgt"; } + import nokia-types-system { prefix "types-system"; } + import nokia-types-wlangw { prefix "types-wlangw"; } + + + sros-ext:sros-major-release "rel19"; + + organization "Nokia"; + + contact + "Nokia SR OS Support + Web: "; + + description + "Nokia YANG Data model to configure Configuration groups on SR OS based routers. + + Copyright 2016 Nokia. All rights reserved. Reproduction of this document + is authorized on the condition that the foregoing copyright notice is included. + + This nokia-conf-groups YANG module embodies Nokia's proprietary + intellectual property. Nokia retains all title and ownership in the + specification, including any revisions. + + Nokia grants all interested parties a non-exclusive license to use + and distribute an unmodified copy of this specification in connection with + management of Nokia products, and without fee, provided this + copyright notice and license appear on all copies. + + This specification is supplied `as is', and Nokia makes no warranty, + either express or implied, as to the use, operation, condition, or performance + of the specification."; + + revision "2019-01-23"; + + grouping conf-groups { + container groups { + description "Enter the groups context"; + + list group { + key "name"; + max-elements 64; + description "Enter the group context"; + + leaf name { + type types-sros:named-item-64; + description "The name of this configuration group."; + } + + list card { + key "slot-number"; + description "Enter the card context"; + + leaf slot-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-card:card-slot; + } + description "IOM slot within a chassis"; + } + + list mda { + key "mda-slot"; + description "Enter the mda context"; + + leaf mda-slot { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..6"; + } + } + description "MDA slot"; + } + + container network { + description "Enter the network context"; + + container ingress { + description "Enter the ingress context"; + + leaf queue-policy { + status obsolete; + type types-sros:named-item; + description "Network-queue policy"; + } + + list pool { + status obsolete; + key "name"; + description "Enter the pool context"; + + leaf name { + status obsolete; + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Unique pool name for MDA"; + } + + leaf amber-alarm-threshold { + status obsolete; + type uint32 { + range "1..1000"; + } + units "percent"; + description "Configure amber alarm threshold allowed on over-subscription."; + } + + leaf red-alarm-threshold { + status obsolete; + type uint32 { + range "1..1000"; + } + units "percent"; + description "Configure red alarm threshold allowed on over-subscription."; + } + + leaf slope-policy { + status obsolete; + type types-sros:named-item; + description "Configure the slope policy."; + } + + container resv-cbs { + status obsolete; + description "Enter the resv-cbs context"; + + leaf cbs { + status obsolete; + type int32 { + range "0..100"; + } + units "percent"; + description + "Configure the percentage of pool size reserved for CBS. + + For network, the default value is computed as the sum of the + CBS request by the entities using the pool. + + For access, the default value is 30%."; + } + + container amber-alarm-action { + status obsolete; + description "Enter the amber-alarm-action context"; + + leaf step { + status obsolete; + type uint32 { + range "1..100"; + } + units "percent"; + description + "Configure the step-size percentage for the reserved CBS size of the + pool. + + When set to a value of zero (0), the adaptive CBS sizing is disabled. + + To enable adaptive CBS sizing, both this leaf and amber-alarm-action/max + must be set to non-default values. + + Adaptive CBS sizing can only be enabled when resv-cbs is non-default."; + } + + leaf max { + status obsolete; + type uint32 { + range "1..100"; + } + units "percent"; + description + "Configure the maximum percentage for the reserved CBS size of the pool. + + When set to a value of zero (0), the adaptive CBS sizing is disabled. + + To enable adaptive CBS sizing, both this leaf and amber-alarm-action/step + must be set to non-default values. + + Adaptive CBS sizing can only be enabled when resv-cbs is non-default. + + This value must not be more than resv-cbs."; + } + + } // container amber-alarm-action + + } // container resv-cbs + + } // list pool + + } // container ingress + + } // container network + + } // list mda + + list fp { + key "fp-number"; + description "Enter the fp context"; + + leaf fp-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Forwarding plane within a specific IOM card"; + } + + leaf ingress-buffer-allocation { + type decimal64 { + range "20.00..80.00"; + fraction-digits 2; + } + units "percent"; + default "50.00"; + description "Ingress buffer pool percentage for forwarding plane"; + } + + leaf init-extract-prio-mode { + type enumeration { + enum "uniform" { value 1; } + enum "l3-classify" { value 2; } + } + default "uniform"; + description "Scheme to select initial drop priority of extracted control plane traffic"; + } + + leaf policy-accounting { + type uint32 { + range "1000..128000"; + } + description "Number of stats resources for policy accounting for the forwarding plane"; + } + + leaf stable-pool-sizing { + type boolean; + default "false"; + description "Use a stable buffer pool allocation environment for all default port buffer pools on an FP"; + } + + container dist-cpu-protection { + description "Enter the dist-cpu-protection context"; + + leaf dynamic-enforcement-policer-pool { + type uint32 { + range "1000..32000"; + } + description "Number of policers reserved for use as dynamic enforcement policers on forwarding plane"; + } + + } // container dist-cpu-protection + + container egress { + description "Enter the egress context"; + + leaf hs-fixed-high-thresh-delta { + type int32 { + range "0..65536"; + } + description "High threshold delta on forwarding plane"; + } + + leaf hs-pool-policy { + type types-sros:named-item; + description "HS pool policy"; + } + + container wred-queue-control { + description "Enter the wred-queue-control context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of WRED queue control"; + } + + leaf buffer-allocation { + type decimal64 { + range "0.01..99.99"; + fraction-digits 2; + } + units "percent"; + default "25.00"; + description + "Configure the WRED queue aggregate buffer allocation + which will be set aside for WRED queue buffer pools"; + } + + leaf reserved-cbs { + type decimal64 { + range "0.01..99.99"; + fraction-digits 2; + } + units "percent"; + default "25.00"; + description + "Configure the buffers within the WRED pool that will + be set aside for WRED queues operating within their configured + CBS thresholds."; + } + + leaf slope-policy { + type types-sros:named-item; + description "Egress WRED queue control slope policy for forwarding plane"; + } + + } // container wred-queue-control + + } // container egress + + container hi-bw-mcast-src { + presence "Enable/disable high bandwidth multicast source functionality."; + description "Enter the hi-bw-mcast-src context"; + + leaf alarm { + type boolean; + default "false"; + description "Raise an alarm when more than one high bandwidth multicast traffic taps share a plane"; + } + + leaf group { + type uint32 { + range "0..32"; + } + default "0"; + description "Logical MSFP group of the MDA"; + } + + leaf default-paths-only { + type boolean; + default "false"; + description "Allocate only the two default paths (one high priority and one low priority) to dedicated MSFPs"; + } + + } // container hi-bw-mcast-src + + container ingress { + description "Enter the ingress context"; + + container access { + description "Enter the access context"; + + list queue-group { + key "queue-group-name instance-id"; + description "Enter the queue-group context"; + + leaf queue-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Queue group name"; + } + + leaf instance-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint16 { + range "1..65535"; + } + } + description "Instance ID"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy for the FP ingress queue group"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics on FP ingress queue group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy"; + } + + container overrides { + presence "Enable policer control policy overrides."; + description "Enter the overrides context"; + + leaf max-rate { + type types-qos:queue-pir-rate-override; + units "kilobps"; + description "Maximum rate override"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-threshold-separation { + type types-qos:policer-burst-size-override; + units "bytes"; + description "Minimum threshold separation override"; + } + + list priority { + key "level"; + description "Enter the priority context"; + + leaf level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type types-qos:policer-burst-size-override; + units "bytes"; + description "MBS contribution size override"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container overrides + + } // container policer-control-policy + + container policer-overrides { + description "Enter the policer-overrides context"; + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id { + range "1..32"; + } + } + description "Policer identifier"; + } + + leaf cbs { + type types-qos:policer-burst-size-override; + units "bytes"; + description "CBS parameter override"; + } + + leaf mbs { + type types-qos:policer-burst-size-override; + units "bytes"; + description "MBS parameter override"; + } + + leaf packet-byte-offset { + type types-qos:ingress-per-packet-offset-override; + description "Size of each packet handled by the policer"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + description "Stat mode for the policer"; + } + + container rate { + description "Enter the rate context"; + + leaf cir { + type types-qos:queue-cir-rate-override; + description "CIR rate"; + } + + leaf pir { + type types-qos:queue-pir-rate-override; + description "PIR rate"; + } + + } // container rate + + } // list policer + + } // container policer-overrides + + } // list queue-group + + } // container access + + container mcast-path-management { + description "Enter the mcast-path-management context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress multicast path management"; + } + + leaf bandwidth-policy { + type types-sros:named-item; + description "Bandwidth policy associated with the MDA or forwarding plane for ingress multicast path management"; + } + + } // container mcast-path-management + + container network { + description "Enter the network context"; + + leaf queue-policy { + type types-sros:named-item; + description "Configure the network policy queue policy."; + } + + list queue-group { + key "queue-group-name instance-id"; + description "Enter the queue-group context"; + + leaf queue-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Queue group name"; + } + + leaf instance-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint16 { + range "1..65535"; + } + } + description "Instance ID"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy for the FP ingress queue group"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics on FP ingress queue group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy"; + } + + container overrides { + presence "Enable policer control policy overrides."; + description "Enter the overrides context"; + + leaf max-rate { + type types-qos:queue-pir-rate-override; + units "kilobps"; + description "Maximum rate override"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-threshold-separation { + type types-qos:policer-burst-size-override; + units "bytes"; + description "Minimum threshold separation override"; + } + + list priority { + key "level"; + description "Enter the priority context"; + + leaf level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type types-qos:policer-burst-size-override; + units "bytes"; + description "MBS contribution size override"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container overrides + + } // container policer-control-policy + + container policer-overrides { + description "Enter the policer-overrides context"; + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id { + range "1..32"; + } + } + description "Policer identifier"; + } + + leaf cbs { + type types-qos:policer-burst-size-override; + units "bytes"; + description "CBS parameter override"; + } + + leaf mbs { + type types-qos:policer-burst-size-override; + units "bytes"; + description "MBS parameter override"; + } + + leaf packet-byte-offset { + type types-qos:ingress-per-packet-offset-override; + description "Size of each packet handled by the policer"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + description "Stat mode for the policer"; + } + + container rate { + description "Enter the rate context"; + + leaf cir { + type types-qos:queue-cir-rate-override; + description "CIR rate"; + } + + leaf pir { + type types-qos:queue-pir-rate-override; + description "PIR rate"; + } + + } // container rate + + } // list policer + + } // container policer-overrides + + } // list queue-group + + list pool { + key "name"; + description "The list of FP ingress network pool parameters."; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Specifies the unique name of the pool for the FP."; + } + + leaf amber-alarm-threshold { + type uint32 { + range "1..1000"; + } + units "percent"; + description "Configure amber alarm threshold allowed on over-subscription."; + } + + leaf red-alarm-threshold { + type uint32 { + range "1..1000"; + } + units "percent"; + description "Configure red alarm threshold allowed on over-subscription."; + } + + leaf slope-policy { + type types-sros:named-item; + description "Configure the slope policy."; + } + + container resv-cbs { + description "Enter the resv-cbs context"; + + leaf cbs { + type int32 { + range "0..100"; + } + units "percent"; + description + "Configure the percentage of pool size reserved for CBS. + + For network, the default value is computed as the sum of the + CBS request by the entities using the pool. + + For access, the default value is 30%."; + } + + container amber-alarm-action { + description "Enter the amber-alarm-action context"; + + leaf step { + type uint32 { + range "1..100"; + } + units "percent"; + description + "Configure the step-size percentage for the reserved CBS size of the + pool. + + When set to a value of zero (0), the adaptive CBS sizing is disabled. + + To enable adaptive CBS sizing, both this leaf and amber-alarm-action/max + must be set to non-default values. + + Adaptive CBS sizing can only be enabled when resv-cbs is non-default."; + } + + leaf max { + type uint32 { + range "1..100"; + } + units "percent"; + description + "Configure the maximum percentage for the reserved CBS size of the pool. + + When set to a value of zero (0), the adaptive CBS sizing is disabled. + + To enable adaptive CBS sizing, both this leaf and amber-alarm-action/step + must be set to non-default values. + + Adaptive CBS sizing can only be enabled when resv-cbs is non-default. + + This value must not be more than resv-cbs."; + } + + } // container amber-alarm-action + + } // container resv-cbs + + } // list pool + + } // container network + + } // container ingress + + } // list fp + + } // list card + + list port { + key "port-id"; + description "Enter the port context"; + + leaf port-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:port; + } + description "Unique port ID"; + } + + container ethernet { + description "Enter the ethernet context"; + + container egress { + description "Enter the egress context"; + + leaf hs-port-pool-policy { + type types-sros:named-item; + description "HS port pool policy"; + } + + leaf hsmda-scheduler-policy { + type types-sros:named-item; + description "HSMDA scheduler policy"; + } + + leaf monitor-port-scheduler { + type boolean; + default "false"; + description + "Enable/disable monitoring of egress scheduler on the Ethernet + port."; + } + + leaf rate { + type int32 { + range "1..400000000"; + } + units "kilobps"; + description "Maximum egress bandwidth that this Ethernet port can receive"; + } + + leaf eth-bn-rate-changes { + type boolean; + default "false"; + description "Receive rate changes in Ethernet Bandwidth Notification (Eth-BN) messages to update egress rate"; + } + + container port-qos-policy { + description "Attach an egress port-qos-policy."; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Port qos policy name"; + } + + } // container port-qos-policy + + list expanded-secondary-shaper { + key "secondary-shaper-name"; + description "Enter the expanded-secondary-shaper context"; + + leaf secondary-shaper-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for the expanded secondary shaper"; + } + + leaf low-burst-max-class { + type uint32 { + range "1..8"; + } + default "8"; + description "Class to associate with the Ethernet egress expanded secondary shaper"; + } + + leaf monitor-threshold { + type types-qos:secondary-shaper-class-threshold; + description "Monitoring threshold for non-conformance burst"; + } + + leaf rate { + type types-qos:secondary-shaper-pir-rate; + default "max"; + description "Rate of the expanded secondary shaper"; + } + + container aggregate-burst { + description "Enter the aggregate-burst context"; + + leaf high-burst-increase { + type int32 { + range "0..65528"; + } + units "bytes"; + description "High burst increase"; + } + + leaf low-burst-limit { + type types-qos:class-burst-limit; + units "bytes"; + description "Low burst limit"; + } + + } // container aggregate-burst + + list class { + key "class-number"; + description "Enter the class context"; + + leaf class-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Unique value of the class"; + } + + leaf rate { + type types-qos:secondary-shaper-pir-rate; + default "max"; + description "Class rate"; + } + + leaf monitor-threshold { + type types-qos:secondary-shaper-class-threshold; + description "Monitoring threshold for non-conformance burst of the class"; + } + + leaf burst-limit { + type types-qos:class-burst-limit; + units "bytes"; + description "Class identifier of the low burst maximum class"; + } + + } // list class + + } // list expanded-secondary-shaper + + container hs-scheduler-policy { + description "Enter the hs-scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "HS port pool policy"; + } + + } // container hs-scheduler-policy + + container port-scheduler-policy { + description "Enter the port-scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Configure an egress scheduler policy."; + } + + container overrides { + presence "Enable port-scheduler-overrides."; + description "Enter the overrides context"; + + container max-rate { + description "Enter the max-rate context"; + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type types-qos:sched-pir-rate; + units "kilobps"; + default "max"; + description "Configure the PIR rate as a rate."; + } + + } + case percent-rate { + + leaf percent-rate { + type decimal64 { + range "0.01..100"; + fraction-digits 2; + } + units "percent"; + default "100"; + description "Configure the PIR rate as a percent."; + } + + } + } + } // container max-rate + + list level { + key "priority-level"; + description "Enter the level context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Specifies the priority level of the port scheduler override."; + } + + choice rate-or-percent-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:sched-pir-rate-ovr; + units "kilobps"; + description "Configure the PIR rate in kbps."; + } + + leaf cir { + type types-qos:sched-cir-rate-ovr; + units "kilobps"; + description "Configure the CIR rate in kbps."; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type types-qos:pir-percent-override; + units "percent"; + description "Configure the PIR rate as a percent."; + } + + leaf cir { + type types-qos:cir-percent-override; + units "percent"; + description "Configure Che CIR rate as a percent."; + } + + } // container percent-rate + + } + } + } // list level + + } // container overrides + + } // container port-scheduler-policy + + } // container egress + + container network { + description "Enter the network context"; + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy that applies to the Ethernet network port"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistical data on the Ethernet port"; + } + + container egress { + description "Enter the egress context"; + + leaf queue-policy { + type types-sros:named-item; + description "Configure the queue policy on the Ethernet network port."; + } + + list queue-group { + key "queue-group-name instance-id"; + description "Enter the queue-group context"; + + leaf queue-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Queue group name"; + } + + leaf instance-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint16 { + range "1..65535"; + } + } + description "Instance ID"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy for the Ethernet port egress queue group"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics on this queue group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf hs-turbo { + type boolean; + default "false"; + description "Allow corresponding HSQ queue group queues to achieve a higher throughput"; + } + + leaf policer-control-policy { + type types-sros:named-item; + description "Policer control policy for the QoS egress queue group"; + } + + leaf scheduler-policy { + type types-sros:named-item; + description "Scheduler policy for the QoS egress queue group"; + } + + container aggregate-rate { + description "Enter the aggregate-rate context"; + + leaf queue-frame-based-accounting { + type boolean; + default "false"; + description "Enable frame-based accounting on all policers and queues associated with context"; + } + + leaf limit-unused-bandwidth { + type boolean; + default "false"; + description "Specify whether to enable limit unused bandwidth."; + } + + leaf rate { + type union { + type uint32 { + range "1..3200000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "max"; + description "Specify aggregate rate limit."; + } + + } // container aggregate-rate + + container queue-overrides { + description "Enter the queue-overrides context"; + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "HSMDA queue overrides queue ID"; + } + + leaf cbs { + type types-qos:burst-size-override; + description "CBS rate"; + } + + leaf mbs { + type types-qos:queue-burst-size-override; + units "bytes"; + description "MBS rate"; + } + + leaf monitor-depth { + type boolean; + default "false"; + description "Enable queue depth monitoring"; + } + + choice queue-override-rate { + default "rate"; + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf cir { + type types-qos:cir-percent-override; + units "percent"; + description "CIR percent rate"; + } + + leaf pir { + type types-qos:pir-percent-override; + units "percent"; + description "PIR percent rate"; + } + + } // container percent-rate + + } + case rate { + + container rate { + description "Enter the rate context"; + + leaf cir { + type types-qos:queue-cir-rate-override; + units "kilobps"; + description "CIR rate"; + } + + leaf pir { + type types-qos:queue-pir-rate-override; + units "kilobps"; + description "PIR rate"; + } + + } // container rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf cir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational CIR value"; + } + + leaf pir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent-or-default-override; + description "Percentage reduction from the MBS for a queue drop tail"; + } + + } // container low + + } // container drop-tail + + } // list queue + + } // container queue-overrides + + } // list queue-group + + } // container egress + + } // container network + + } // container ethernet + + } // list port + + container qos { + description "Enter the qos context"; + + container md-auto-id { + description "Enter the md-auto-id context"; + + container qos-policy-id-range { + presence "Qos policy Id range for MD Auto assignment"; + description "Enter the qos-policy-id-range context"; + + leaf start { + type types-qos:qos-policy-id { + range "2..65535"; + } + sros-ext:immutable; + mandatory true; + description "Lower value of the ID range, must be less than or equal to end value"; + } + + leaf end { + type types-qos:qos-policy-id { + range "2..65535"; + } + sros-ext:immutable; + mandatory true; + description "Upper value of the ID range, must be greater than or equal to start value"; + } + + } // container qos-policy-id-range + + } // container md-auto-id + + list sap-ingress { + key "sap-ingress-policy-name"; + description "Enter the sap-ingress context"; + + leaf sap-ingress-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "Name of this SAP-ingress QoS policy"; + } + + leaf policy-id { + type types-qos:qos-policy-id; + sros-ext:immutable; + description "The sap-ingress QoS policy identifier."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf default-fc { + type types-qos:sap-ingress-fc-name; + description "Default forwarding class or sub forwarding class for traffic not matching specific classification"; + } + + leaf default-priority { + type types-qos:default-priority; + default "low"; + description "Priority to assign to traffic ingressing as the default action queue"; + } + + leaf ingress-classification-policy { + type types-qos:qos-policy-name; + description "Attach ingress classification policy."; + } + + container subscriber-mgmt { + description "Enter the subscriber-mgmt context"; + + container pcc-rule-entry { + description "Enter the pcc-rule-entry context"; + + container range { + presence "true"; + description "Enter the range context"; + + leaf start { + type types-qos:entry-id; + mandatory true; + description "Starting entry at which the PCC-rule IP criteria entries are shared across several hosts"; + } + + leaf end { + type types-qos:entry-id; + mandatory true; + description "Ending entry at which the PCC-rule IP criteria entries are shared across several hosts"; + } + + } // container range + + } // container pcc-rule-entry + + container dynamic-policer { + description "Enter the dynamic-policer context"; + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority violate threshold of PIR leaky bucket of this policer"; + } + + leaf packet-byte-offset { + type types-qos:per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + container policer-id-range { + presence "true"; + description "Enter the policer-id-range context"; + + leaf start { + type types-qos:ingress-policer-id; + mandatory true; + description "Starting place at which dynamic policers, required for PCC-rule IP criteria entries, will be inserted"; + } + + leaf end { + type types-qos:ingress-policer-id; + mandatory true; + description "Ending place at which dynamic policers, required for PCC-rule IP criteria entries, will be inserted"; + } + + } // container policer-id-range + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + } // container dynamic-policer + + } // container subscriber-mgmt + + container mac-criteria { + description "Enter the mac-criteria context"; + + leaf type { + type types-qos:mac-criteria-type; + sros-ext:immutable; + default "normal"; + description "MAC criteria filter type"; + } + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "Identifier for MAC match criteria and the corresponding action for a SAP-ingress policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf frame-type { + type types-qos:mac-frame-type; + default "802dot3"; + description "Match MAC criteria for ingress SAP QoS policy"; + } + + leaf etype { + type types-services:etype-value; + description "Ethernet type"; + } + + leaf snap-pid { + type int32 { + range "0..65535"; + } + description "Parameter snap-pid as MAC filter match criteria"; + } + + leaf snap-oui { + type enumeration { + enum "zero" { value 2; } + enum "non-zero" { value 3; } + } + description "Parameter snap-oui as MAC filter match criteria"; + } + + leaf atm-vci { + type types-qos:atm-vc-indentifier; + description "ATM VC Identifier to match as part of the MAC match criteria"; + } + + container src-mac { + presence "Enable source MAC address match criteria."; + description "Enter the src-mac context"; + + leaf address { + type yang:mac-address; + mandatory true; + description "Source MAC address"; + } + + leaf mask { + type yang:mac-address; + default "ff:ff:ff:ff:ff:ff"; + description "Mask for source MAC address"; + } + + } // container src-mac + + container dst-mac { + presence "Enable destination MAC address match criteria."; + description "Enter the dst-mac context"; + + leaf address { + type yang:mac-address; + mandatory true; + description "Destination MAC address"; + } + + leaf mask { + type yang:mac-address; + default "ff:ff:ff:ff:ff:ff"; + description "Mask for destination MAC address"; + } + + } // container dst-mac + + container dot1p { + presence "Enable 802.1P Priority Match Criteria."; + description "Enter the dot1p context"; + + leaf priority { + type types-qos:dot1p-priority; + mandatory true; + description "Value of 802.1P priority to use as a MAC filter match criterion"; + } + + leaf mask { + type types-qos:dot1p-priority; + default "7"; + description "Value of 802.1P mask to use as a MAC filter match criterion"; + } + + } // container dot1p + + container llc-dsap { + presence "Enable DSAP criteria matching."; + description "Enter the llc-dsap context"; + + leaf dsap { + type types-qos:service-access-point; + mandatory true; + description "DSAP value"; + } + + leaf mask { + type types-qos:service-access-point; + default "255"; + description "DSAP mask"; + } + + } // container llc-dsap + + container llc-ssap { + presence "Enable SSAP criteria matching."; + description "Enter the llc-ssap context"; + + leaf ssap { + type types-qos:service-access-point; + mandatory true; + description "SSAP value"; + } + + leaf mask { + type types-qos:service-access-point; + default "255"; + description "Source SAP mask"; + } + + } // container llc-ssap + + container inner-tag { + presence "Enable inner tag criteria matching."; + description "Enter the inner-tag context"; + + leaf vlan { + type int32 { + range "0..4095"; + } + mandatory true; + description "Match against VID of the second or first VLAN tag in the packet carried transparently through service"; + } + + leaf mask { + type uint32 { + range "1..4095"; + } + default "4095"; + description "Mask to VID of the inner VLAN tag before comparing it with the inner-tag or outer-tag value"; + } + + } // container inner-tag + + container outer-tag { + presence "Enable outer tag criteria matching."; + description "Enter the outer-tag context"; + + leaf vlan { + type int32 { + range "0..4095"; + } + mandatory true; + description "Match against VID of the first VLAN tag in the packet carried transparently through service"; + } + + leaf mask { + type uint32 { + range "1..4095"; + } + default "4095"; + description "First tag carried transparently through the service"; + } + + } // container outer-tag + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the packet"; + } + + leaf policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the traffic matching MAC Criteria"; + } + + } // container action + + } // list entry + + } // container mac-criteria + + container ip-criteria { + description "Enter the ip-criteria context"; + + leaf type { + type types-qos:ip-filter-type; + sros-ext:immutable; + default "normal"; + description "IP filter type"; + } + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "IP criteria entry to create or edit for the policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf protocol { + type types-sros:ipv4-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + } + description "Match performed when the packet is either a fragment or not, or matches all packets"; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "IP-prefix list as match criterion"; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "IP-prefix list as match criterion"; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + container vxlan-vni { + description "Enter the vxlan-vni context"; + + choice vxlan-vni-mapping { + case eq { + + leaf eq { + type uint32 { + range "1..16777215"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type uint32 { + range "1..16777215"; + } + description "Start value of range"; + } + + leaf end { + type uint32 { + range "1..16777215"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container vxlan-vni + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the packet"; + } + + leaf policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the traffic matching MAC Criteria"; + } + + } // container action + + } // list entry + + } // container ip-criteria + + container ipv6-criteria { + description "Enter the ipv6-criteria context"; + + leaf type { + type types-qos:ip-filter-type; + sros-ext:immutable; + default "normal"; + description "IPv6 filter type"; + } + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "IPv6 criteria entry to create or edit for the policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf next-header { + type types-sros:ipv6-match-protocol; + description "Next Header to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + enum "first-only" { value 4; } + enum "non-first-only" { value 5; } + } + description "Match performed when the packet is either a fragment or not, or matches all packets"; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet"; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet"; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + container vxlan-vni { + description "Enter the vxlan-vni context"; + + choice vxlan-vni-mapping { + case eq { + + leaf eq { + type uint32 { + range "1..16777215"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type uint32 { + range "1..16777215"; + } + description "Start value of range"; + } + + leaf end { + type uint32 { + range "1..16777215"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container vxlan-vni + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the packet"; + } + + leaf policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the traffic matching MAC Criteria"; + } + + } // container action + + } // list entry + + } // container ipv6-criteria + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-queue-id; + } + description "SAP-ingress policer identifier"; + } + + leaf multipoint { + type boolean; + sros-ext:immutable; + default "false"; + description "Apply as a multicast queue"; + } + + leaf queue-type { + type types-qos:queue-type; + sros-ext:immutable; + default "auto-expedited"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf queue-mode { + type enumeration { + enum "priority" { value 1; } + enum "profile" { value 2; } + } + sros-ext:immutable; + default "priority"; + description "Operating mode for this queue"; + } + + leaf cbs { + type union { + type int32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + default "auto"; + description "Reserved buffer space for the queue"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Maximum buffer space that is allowed for queue"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + leaf packet-byte-offset { + type types-qos:per-packet-offset { + range "-32..30"; + } + default "0"; + description "Value of the adjustment on the size of each packet for queue accounting"; + } + + leaf cir-non-profiling { + type boolean; + default "false"; + description "Prevents the CIR to be used for re-profiling a packet's state."; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + choice rate-cir-fir-or-police { + default "cir-fir"; + case cir-fir { + + leaf cir { + type types-qos:queue-cir-rate-maximum; + units "kilobps"; + default "0"; + description "Specifies the administrative CIR."; + } + + leaf fir { + type types-qos:queue-fir-rate-maximum; + units "kilobps"; + default "0"; + description "Specifies the administrative FIR."; + } + + } + case police { + + leaf police { + type empty; + description + "Specifies that the out of profile traffic feeding into the physical queue + instance should be dropped"; + } + + } + } + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf reference-rate { + type enumeration { + enum "port-limit" { value 2; } + enum "local-limit" { value 3; } + } + default "port-limit"; + description "Reference rate as percentage"; + } + + choice percent-rate-cir-fir-or-police { + default "cir-fir"; + case cir-fir { + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative CIR percent."; + } + + leaf fir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative FIR percent."; + } + + } + case police { + + leaf police { + type empty; + description + "Specifies that the out of profile traffic feeding into the physical queue + instance should be dropped"; + } + + } + } + } // container percent-rate + + } + } + container scheduler-parent { + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + description "Scheduler to which this queue feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Level of priority while feeding to the parent"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container scheduler-parent + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf fir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the operational FIR + value. The adaptation rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + } // container drop-tail + + } // list queue + + list dscp { + key "dscp-name"; + description "Enter the dscp context"; + + leaf dscp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dscp-name; + } + description "Name for the Differentiated Services Code Point (DSCP)"; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the packet"; + } + + } // list dscp + + list dot1p { + key "dot1p-value"; + description "Enter the dot1p context"; + + leaf dot1p-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dot1p-priority; + } + description "Dot1p value to match in the packet"; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for packets that match the Dot1p value"; + } + + } // list dot1p + + list prec { + key "prec-value"; + description "Enter the prec context"; + + leaf prec-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:precedence-value; + } + description "Precedence value for which mapping is performed"; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the matching traffic"; + } + + } // list prec + + list lsp-exp { + key "lsp-exp-value"; + description "Enter the lsp-exp context"; + + leaf lsp-exp-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:lsp-exp-value; + } + description "Value to assign the unique MPLS LSP EXP value that will match the lsp-exp rule"; + } + + leaf fc { + type types-qos:sap-ingress-fc-name; + description "Forwarding class or sub forwarding class to classify traffic matching the MAC criteria"; + } + + leaf priority { + type types-qos:priority; + description "Priority for the matching traffic"; + } + + } // list lsp-exp + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:sap-ingress-fc-name; + } + description "Forwarding class or the sub forwarding class for which this mapping is performed"; + } + + leaf profile { + type types-qos:profile; + description "Profile of the packets associated with this forwarding class"; + } + + leaf de-1-out-profile { + type boolean; + default "false"; + description "Frames with DE value to be assigned as out of profile"; + } + + leaf egress-fc { + type types-sros:fc-name; + description "Forwarding class to override the forwarding class determined by ingress classification"; + } + + choice queue-policer-mapping { + case queue { + + leaf queue { + type types-qos:ingress-queue-id; + description "Queue to assign for packets in this forwarding class"; + } + + } + case queue-group-queue { + + container queue-group-queue { + presence "Sap-Ingress Forwarding Class (FC) queue-group mappings."; + description "Enter the queue-group-queue context"; + + leaf queue-group-name { + type types-sros:named-item; + mandatory true; + description "Queue group name associated with queue"; + } + + leaf queue { + type types-qos:ingress-queue-id; + mandatory true; + description "Queue to assign for packets in this forwarding class"; + } + + } // container queue-group-queue + + } + case policer { + + leaf policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the normal traffic in this forwarding class"; + } + + leaf fp-redirect-group-policer { + type empty; + description "Specified policer to be used as defined in the FP (forwarding-plane)"; + } + + } + } + choice multicast-queue-policer-mapping { + case multicast-queue { + + leaf multicast-queue { + type types-qos:ingress-queue-id; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } + case multicast-queue-group-queue { + + container multicast-queue-group-queue { + presence "Sap-Ingress Forwarding Class (FC) queue-group mappings."; + description "Enter the unknown-queue-group-queue context"; + + leaf queue-group-name { + type types-sros:named-item; + mandatory true; + description "Queue group name associated with broadcast queue"; + } + + leaf queue { + type types-qos:ingress-queue-id; + mandatory true; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } // container multicast-queue-group-queue + + } + case multicast-policer { + + leaf multicast-policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the broadcast traffic in this forwarding class"; + } + + leaf fp-redirect-group-multicast-policer { + type empty; + description "Broadcast policer to be used as defined in the FP (forwarding-plane)"; + } + + } + } + choice broadcast-queue-policer-mapping { + case broadcast-queue { + + leaf broadcast-queue { + type types-qos:ingress-queue-id; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } + case broadcast-queue-group-queue { + + container broadcast-queue-group-queue { + presence "Sap-Ingress Forwarding Class (FC) queue-group mappings."; + description "Enter the unknown-queue-group-queue context"; + + leaf queue-group-name { + type types-sros:named-item; + mandatory true; + description "Queue group name associated with broadcast queue"; + } + + leaf queue { + type types-qos:ingress-queue-id; + mandatory true; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } // container broadcast-queue-group-queue + + } + case broadcast-policer { + + leaf broadcast-policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the broadcast traffic in this forwarding class"; + } + + leaf fp-redirect-group-broadcast-policer { + type empty; + description "Broadcast policer to be used as defined in the FP (forwarding-plane)"; + } + + } + } + choice unknown-queue-policer-mapping { + case unknown-queue { + + leaf unknown-queue { + type types-qos:ingress-queue-id; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } + case unknown-queue-group-queue { + + container unknown-queue-group-queue { + presence "Sap-Ingress Forwarding Class (FC) queue-group mappings."; + description "Enter the unknown-queue-group-queue context"; + + leaf queue-group-name { + type types-sros:named-item; + mandatory true; + description "Queue group name associated with broadcast queue"; + } + + leaf queue { + type types-qos:ingress-queue-id; + mandatory true; + description "Broadcast queue to assign for packets in this forwarding class"; + } + + } // container unknown-queue-group-queue + + } + case unknown-policer { + + leaf unknown-policer { + type types-qos:ingress-policer-id; + description "Policer identifier for the broadcast traffic in this forwarding class"; + } + + leaf fp-redirect-group-unknown-policer { + type empty; + description "Broadcast policer to be used as defined in the FP (forwarding-plane)"; + } + + } + } + container in-remark { + description "Enter the in-remark context"; + + choice in-profile { + case dscp { + + leaf dscp { + type types-qos:dscp-name; + description + "Specifies the DSCP to be used while remarking the in profile packets when + the in-profile remarking type is 'dscp'."; + } + + } + case prec { + + leaf prec { + type types-qos:precedence-value; + description + "Specifies the precedence value to be used while remarking the in profile + packets when the in-profile remarking type is 'precedence'."; + } + + } + } + } // container in-remark + + container out-remark { + description "Enter the out-remark context"; + + choice out-profile { + case dscp { + + leaf dscp { + type types-qos:dscp-name; + description + "Specifies the DSCP to be used while remarking the out profile packets when + the out-profile remarking type is 'dscp'."; + } + + } + case prec { + + leaf prec { + type types-qos:precedence-value; + description + "Specifies the precedence value to be used while remarking the out profile + packets when the out-profile remarking type is 'precedence'."; + } + + } + } + } // container out-remark + + } // list fc + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id; + } + description "SAP-ingress policer identifier"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority for the violate threshold of PIR leaky bucket of this policer"; + } + + leaf high-prio-only { + type types-qos:burst-percent; + description "Percentage of PIR leaky bucket's MBS of this policer that is reserved for high priority traffic"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf packet-byte-offset { + type types-qos:per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + leaf profile-capped { + type boolean; + default "false"; + description "Enforce an overall in-profile burst limit to the CIR bucket at ingress policer"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:policer-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:policer-cir-rate-maximum; + units "kilobps"; + default "0"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Administrative CIR percent"; + } + + } // container percent-rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + } // list policer + + } // list sap-ingress + + list slope-policy { + key "slope-policy-name"; + max-elements 511; + description "Enter the slope-policy context"; + + leaf slope-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Slope policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf time-average-factor { + type uint32 { + range "0..15"; + } + default "7"; + description "Apply time average factor to weight between previous and new shared buffer utilization result"; + } + + container highplus-slope { + description "Enter the highplus-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the highplus priority RED slope"; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "85"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "100"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type uint32 { + range "0..100"; + } + default "80"; + description "Drop probability increase at highplus start-average"; + } + + } // container highplus-slope + + container high-slope { + description "Enter the high-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the high priority RED slope"; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "70"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "90"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type uint32 { + range "0..100"; + } + default "80"; + description "Drop probability to increase at high start-average"; + } + + } // container high-slope + + container low-slope { + description "Enter the low-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the low priority RED slope"; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "50"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "75"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type uint32 { + range "0..100"; + } + default "80"; + description "Drop probability to increase at low start-average"; + } + + } // container low-slope + + container exceed-slope { + description "Enter the exceed-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the exceed priority RED slope"; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "30"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "55"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type uint32 { + range "0..100"; + } + default "80"; + description "Drop probability to increase at exceed start-average"; + } + + } // container exceed-slope + + } // list slope-policy + + list hsmda-slope-policy { + key "hsmda-slope-policy-name"; + description "Enter the hsmda-slope-policy context"; + + leaf hsmda-slope-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "HSMDA slope policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container high-slope { + description "Enter the high-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the high priority RED slope"; + } + + leaf start-depth { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-depth { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Drop probability when the HSMDA queue depth reaches maximum depth"; + } + + } // container high-slope + + container low-slope { + description "Enter the low-slope context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the low priority RED slope"; + } + + leaf start-depth { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "90.00"; + description "Buffer percentage after which the drop probability starts to rise above value"; + } + + leaf max-depth { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "90.00"; + description "Buffer percentage after which the drop probability reaches maximum average"; + } + + leaf max-prob { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Drop probability when the HSMDA queue depth reaches maximum depth"; + } + + } // container low-slope + + } // list hsmda-slope-policy + + list hsmda-wrr-policy { + key "hsmda-wrr-policy-name"; + description "Enter the hsmda-wrr-policy context"; + + leaf hsmda-wrr-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "HSMDA WRR policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf include-queues { + type enumeration { + enum "1-2" { value 1; } + enum "1-3" { value 2; } + } + default "1-2"; + description "Queues to include includes into the HSMDA WRR scheduling loop policy"; + } + + leaf schedule-using-class { + type int32 { + range "1..3"; + } + default "1"; + description "Class to schedule the queues specified within the HSMDA scheduler"; + } + + leaf class-agg-weight { + type int32 { + range "1|2|4|8"; + } + default "1"; + description "Weight assigned to the group of queues specified within the HSMDA scheduler"; + } + + } // list hsmda-wrr-policy + + list hsmda-pool-policy { + key "hsmda-pool-policy-name"; + description "Enter the hsmda-pool-policy context"; + + leaf hsmda-pool-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "The name of the HSMDA Pool Policy."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf system-reserve { + type decimal64 { + range "1.00..30.00"; + fraction-digits 2; + } + default "10.00"; + description "Specifies the percentage of HSMDA buffers reserved for internal system use."; + } + + container root-tier { + description "Enter the root-tier context"; + + list root-pool { + key "root-pool-id"; + description "Enter the root-pool context"; + + leaf root-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Root pool identifier for the HSMDA pool policy"; + } + + leaf allocation-weight { + type uint32 { + range "0..100"; + } + default "0"; + description + "Specifies the weight that will be applied to the + first root pool and is divided by the sum of all root pool + weights to derive the pool's buffer allocation factor."; + } + + } // list root-pool + + } // container root-tier + + container class-tier { + description "Enter the class-tier context"; + + list class-pool { + key "class-pool-id"; + description "Enter the class-pool context"; + + leaf class-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Class pool for the HSMDA pool policy"; + } + + leaf root-parent { + type uint32 { + range "1..8"; + } + default "1"; + description "Specifies the parent root to which this class-pool is associated."; + } + + leaf allocation-percent { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description + "Specifies the percentage of the root-pool with which it is associated, + as specified by root-parent will be available to this class-pool."; + } + + } // list class-pool + + } // container class-tier + + } // list hsmda-pool-policy + + list hsmda-scheduler-policy { + key "hsmda-scheduler-policy-name"; + description "Enter the hsmda-scheduler-policy context"; + + leaf hsmda-scheduler-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "The name of the HSMDA scheduler policy."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf max-rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "megabps"; + default "max"; + description "Specifies the maximum rate for this HSMDA scheduler policy."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..327680"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + list group { + key "group-id"; + description "Enter the group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..2"; + } + } + description "Group ID for the HSMDA scheduler policy"; + } + + leaf rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "megabps"; + default "max"; + description "Specifies the group maximum rate."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..327680"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + } // list group + + list scheduling-class { + key "class-id"; + description "Enter the scheduling-class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Class identifier for the HSMDA scheduler policy scheduling class"; + } + + choice rate-or-group { + default "rate"; + case rate { + + leaf rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "megabps"; + default "max"; + description "Specifies the scheduling class maximum rate."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..327680"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + } + case group { + + container group { + presence "Specifies the group and weight configuration."; + description "Enter the group context"; + + leaf group-id { + type uint32 { + range "1..2"; + } + mandatory true; + description "Specifies the group associated with this scheduling class."; + } + + leaf weight { + type int32 { + range "1..100"; + } + default "1"; + description "Specifies the weight in group associated with this scheduling class."; + } + + } // container group + + } + } + } // list scheduling-class + + } // list hsmda-scheduler-policy + + list atm-td-profile { + key "atm-td-profile-id"; + description "Enter the atm-td-profile context"; + + leaf atm-td-profile-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:atm-traffic-descr-idx; + } + description "ATM traffic descriptor ID"; + } + + leaf shaping { + type boolean; + default "false"; + description "Enable cell level shaping when the ATP traffic description profile is applied to an ATM SAP queue"; + } + + leaf service-category { + type types-qos:atm-service-category; + default "ubr"; + description "ATM service category"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf descriptor-type { + type enumeration { + enum "p01" { value 0; } + enum "p01-and-s01" { value 1; } + enum "p01-and-s0" { value 2; } + enum "p01-and-s0-tag" { value 3; } + } + default "p01-and-s01"; + description "Select the type of ATM traffic descriptor"; + } + + leaf policing { + type boolean; + default "false"; + description "Allow ingress traffic policing"; + } + + leaf clp-tagging { + type boolean; + default "false"; + description "Control the setting of the CLP bit in the ATM cell header for egress traffic on IES or VPRN SAP"; + } + + leaf weight { + type int32 { + range "1..255"; + } + default "1"; + description "Relative weight for the ATM traffic descriptor based on ATM VP shaper scheduling"; + } + + container traffic { + description "Enter the traffic context"; + + leaf sir { + type uint32; + units "kilobps"; + default "0"; + description "Sustained information rate"; + } + + leaf pir { + type uint32; + units "kilobps"; + default "0"; + description "Peak information rate"; + } + + leaf mir { + type uint32; + units "kilobps"; + default "0"; + description "Minimum information rate"; + } + + leaf mbs { + type uint32; + default "0"; + description "Maximum burst size in cell"; + } + + leaf cdvt { + type uint32; + units "microseconds"; + default "250"; + description "Cell Delay Variation Tolerance"; + } + + } // container traffic + + } // list atm-td-profile + + list network-queue { + key "network-queue-policy"; + max-elements 255; + description "Enter the network-queue context"; + + leaf network-queue-policy { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for network queue policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf hs-attachment-policy { + type types-sros:named-item; + description "HS attachment policy applied"; + } + + container egress-hsmda { + description "Enter the egress-hsmda context"; + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Packet byte offset to use for the HSMDA egress queues"; + } + + leaf wrr-policy { + type types-sros:named-item; + description "WRR policy to use on this HSMDA egress queue"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress HSMDA queue ID"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..1000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..2688000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Percentage of buffer space allowed for the queue"; + } + + leaf percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "PIR percentage rate"; + } + + leaf slope-policy { + type types-sros:named-item; + description "Slop policy name to override the default slope policy for the named buffer pool"; + } + + leaf wrr-weight { + type types-qos:hsmda-wrr-weight; + default "1"; + description "Weight value for the HSMDA queue"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list queue + + } // container egress-hsmda + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name"; + } + + leaf queue { + type types-qos:network-queue-queue-id; + default "1"; + description "Queue for packets in this forwarding class"; + } + + leaf multicast-queue { + type types-qos:network-queue-queue-id; + default "9"; + description "Multicast queue for packets in this forwarding class"; + } + + container egress-hsmda { + description "Enter the egress-hsmda context"; + + leaf queue { + type types-qos:egress-queue-id; + description "Egress HSDMA queue for packets in this forwarding class"; + } + + } // container egress-hsmda + + } // list fc + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:network-queue-queue-id; + } + description "HSMDA queue for packets in this forwarding class"; + } + + leaf multipoint { + type boolean; + sros-ext:immutable; + default "false"; + description "Apply as a multicast queue"; + } + + leaf queue-type { + type enumeration { + enum "expedited" { value 1; } + enum "auto-expedited" { value 2; } + enum "best-effort" { value 3; } + } + sros-ext:immutable; + default "auto-expedited"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf cbs { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "1.00"; + description "Reserved buffer space for the queue"; + } + + leaf mbs { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Percentage of buffer space allowed for the queue"; + } + + leaf avg-frame-overhead { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Encapsulation overhead to translate the packet based rate to frame based rate and vice versa"; + } + + leaf hs-alt-port-class-pool { + type boolean; + default "false"; + description "Use HS alternate class port pool buffer for traffic"; + } + + leaf hs-wrr-weight { + type types-qos:hs-wrr-weight; + default "1"; + description "Weighted Round Robin (WRR) weight to parent with this queue into the scheduler"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Scheduling class weight"; + } + + leaf hs-mbs { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Percentage of buffer space allowed for the HS queue"; + } + + container rate { + description "Enter the rate context"; + + leaf pir { + type int32 { + range "1..100"; + } + units "percent"; + default "100"; + description "PIR percentage rate"; + } + + leaf cir { + type int32 { + range "0..100"; + } + units "percent"; + default "0"; + description "CIR percentage rate"; + } + + leaf fir { + type int32 { + range "0..100"; + } + units "percent"; + default "0"; + description "Specifies the FIR percentage rate."; + } + + } // container rate + + container port-parent { + presence "Specifies whether this queue is parented by port-level scheduler."; + description "Enter the port-parent context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + } // container port-parent + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + leaf fir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the operational FIR + value. The adaptation rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + } // container drop-tail + + container hs-wred-queue { + description "Enter the hs-wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Slope policy name"; + } + + } // container hs-wred-queue + + } // list queue + + list hs-wrr-group { + key "group-id"; + description "Enter the hs-wrr-group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hs-wrr-group-id; + } + description "HS WRR group identifier"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Weight of scheduling class"; + } + + leaf rate { + type uint32 { + range "1..100"; + } + default "100"; + description "PIR rate"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list hs-wrr-group + + } // list network-queue + + list shared-queue { + key "shared-queue-policy-name"; + description "Enter the shared-queue context"; + + leaf shared-queue-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for the shared queue policy"; + } + + leaf description { + type types-sros:description-or-empty; + description "Text description"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..32"; + } + } + description "Shared queue identifier"; + } + + leaf multipoint { + type boolean; + default "false"; + description "Apply as a multicast queue"; + } + + leaf queue-type { + type enumeration { + enum "expedited" { value 1; } + enum "auto-expedited" { value 2; } + enum "best-effort" { value 3; } + } + default "auto-expedited"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf cbs { + type int32 { + range "0..100"; + } + units "percent"; + default "0"; + description "Committed burst size as a percentage of the maximum reserved buffer space for the queue"; + } + + leaf mbs { + type int32 { + range "0..100"; + } + units "percent"; + default "100"; + description "Maximum burst size as a percentage of maximum reserved buffer space for the queue"; + } + + container rate { + description "Enter the rate context"; + + leaf pir { + type int32 { + range "1..100"; + } + units "percent"; + default "100"; + description "PIR percentage rate"; + } + + leaf cir { + type int32 { + range "0..100"; + } + units "percent"; + default "0"; + description "CIR percentage rate"; + } + + leaf fir { + type int32 { + range "0..100"; + } + units "percent"; + default "0"; + description "Specifies the FIR percentage rate."; + } + + } // container rate + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + } // container drop-tail + + } // list queue + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class mapping to queue mappings"; + } + + leaf queue { + type int32 { + range "1..8"; + } + default "1"; + description "Logical queue that the traffic, classified into this forwarding class, should use"; + } + + leaf broadcast-queue { + type int32 { + range "9..32"; + } + default "17"; + description "Logical queue that the broadcast traffic, classified into this forwarding class, should use"; + } + + leaf multicast-queue { + type int32 { + range "9..32"; + } + default "9"; + description "Logical queue that the multicast traffic, classified into this forwarding class, should use"; + } + + leaf unknown-queue { + type int32 { + range "9..32"; + } + default "25"; + description "Logical queue that the unknown traffic, classified into this forwarding class, should use"; + } + + } // list fc + + } // list shared-queue + + list adv-config-policy { + key "adv-config-policy-name"; + max-elements 255; + description "Enter the adv-config-policy context"; + + leaf adv-config-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Advanced QoS policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container child-control { + description "Enter the child-control context"; + + container bandwidth-distribution { + description "Enter the bandwidth-distribution context"; + + leaf enqueue-on-pir-zero { + type boolean; + default "false"; + description "Enqueue the packets when bandwidth-distribution granularity rate is set to zero"; + } + + leaf internal-scheduler-weight-mode { + type types-qos:internal-scheduler-weight-mode; + description "Weight mode applied to this advanced QoS policy"; + } + + leaf limit-pir-zero-drain { + type boolean; + default "false"; + description "Throttle the queue draining based on bandwidth-distribution granularity rate"; + } + + leaf lub-init-min-pir { + type boolean; + default "false"; + description "Apply minimum rate operational PIR to queue for use by enqueued packets prior to an HQoS iteration"; + } + + container above-offered-cap { + description "Enter the above-offered-cap context"; + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type union { + type int64 { + range "0..100000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + description "Explicit number to assign as limit to the child's fair share increase"; + } + + } + case percent { + + leaf percent { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "Percentage of the child's administrative PIR that is used as the fair share increase limit"; + } + + } + } + } // container above-offered-cap + + container granularity { + description "Enter the granularity context"; + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type int64 { + range "0..100000000"; + } + description "Rounding rate step value"; + } + + } + case percent { + + leaf percent { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "Rounding percentage value for administratiive PIR"; + } + + } + } + } // container granularity + + } // container bandwidth-distribution + + container offered-measurement { + description "Enter the offered-measurement context"; + + leaf fast-start { + type boolean; + default "false"; + description "Allow fast detection of initial bandwidth on a child policer or queue associated with policy"; + } + + leaf fast-stop { + type boolean; + default "false"; + description "Allow fast detection of lack of offered rate on a child policer or queue associated with the policy"; + } + + leaf sample-interval { + type uint32 { + range "1..8"; + } + default "1"; + description "Interval for sampling the child's offered rate"; + } + + container add { + description "Enter the add context"; + + leaf min-only { + type boolean; + default "false"; + description "Use specified increase value as a minimum offered rate even for inactive queues or policers"; + } + + leaf active-min-only { + type boolean; + default "false"; + description "Use increase in rate or percentage as minimum offered rate only for active queues or policers"; + } + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type int64 { + range "0..100000000"; + } + description "Rate value to add to child's offered rate"; + } + + } + case percent { + + leaf percent { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "Percentage of child's administrative PIR to add to child's offered rate"; + } + + } + } + } // container add + + container granularity { + description "Enter the granularity context"; + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type int64 { + range "0..100000000"; + } + description "Value to use as child's offered rate change sensitivity value"; + } + + } + case percent { + + leaf percent { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "Percentage of child's administrative PIR used as threshold sensitivity to offered rate change"; + } + + } + } + } // container granularity + + container hold-time { + description "Enter the hold-time context"; + + leaf high-rate { + type uint32 { + range "0..60"; + } + default "0"; + description "Time during which current offered rate is maintained for a child policer or queue"; + } + + leaf active-min-only { + type boolean; + default "false"; + description "Use specified increase value as minimum offered rate only for active queues or policers"; + } + + } // container hold-time + + container max-decrement { + description "Enter the max-decrement context"; + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type int64 { + range "0..100000000"; + } + description "Value to use as the decrement limit to offered rate change"; + } + + } + case percent { + + leaf percent { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "Value of the child's administrative PIR to use as the decrement limit to offered rate change"; + } + + } + } + } // container max-decrement + + container time-average-factor { + description "Enter the time-average-factor context"; + + leaf weighting-factor { + type uint32 { + range "0..64"; + } + default "0"; + description "New offered rate with a sample of the previous offered rate"; + } + + leaf dec-only { + type boolean; + default "false"; + description "Apply time average factor adjustment when the offered rate decreases compared to previous"; + } + + } // container time-average-factor + + } // container offered-measurement + + } // container child-control + + } // list adv-config-policy + + list mlppp-profile-ingress { + key "mc-mlppp-ingress-prof-index"; + max-elements 128; + description "Enter the mlppp-profile-ingress context"; + + leaf mc-mlppp-ingress-prof-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "Index of the ingress MultiClass MLPPP profile"; + } + + leaf description { + type types-sros:description-or-empty; + description "Text description"; + } + + list class { + key "class-id"; + description "Enter the class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "0..3"; + } + } + description "Policy class"; + } + + leaf reassembly-timeout { + type uint32 { + range "1..1000"; + } + default "10"; + description "Reassembly timeout for this policy"; + } + + } // list class + + } // list mlppp-profile-ingress + + list mlppp-profile-egress { + key "mc-mlppp-egress-prof-index"; + max-elements 128; + description "Enter the mlppp-profile-egress context"; + + leaf mc-mlppp-egress-prof-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "Index of the egress MultiClass MLPPP profile"; + } + + leaf description { + type types-sros:description-or-empty; + description "Text description"; + } + + list class { + key "class-id"; + description "Enter the class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "0..3"; + } + } + description "Policy class"; + } + + leaf mir { + type uint32 { + range "1..100"; + } + description "Minimum information rate (MIR) as percentage"; + } + + leaf max-queue-size { + type uint32 { + range "1..1000"; + } + default "25"; + description "Buffer queue size"; + } + + leaf weight { + type uint32 { + range "1..100"; + } + description "Weight of this multiclass class as a percentage"; + } + + } // list class + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name"; + } + + leaf mlppp-class { + type uint32 { + range "0..3"; + } + default "0"; + description "Mapping of the system forwarding class to the MLPPP classes"; + } + + } // list fc + + } // list mlppp-profile-egress + + list mc-fr-profile-ingress { + key "mc-fr-ingress-prof-index"; + max-elements 128; + description "Enter the mc-fr-profile-ingress context"; + + leaf mc-fr-ingress-prof-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "Index of the ingress MultiClass Frame Relay profile"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + list class { + key "class-id"; + description "Enter the class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "0..3"; + } + } + description "Frame-relay ingress class per multi-class frame-relay ingress profile"; + } + + leaf reassembly-timeout { + type uint32 { + range "1..1000"; + } + default "25"; + description "Reassembly timeout for a specific frame-relay multi-class ingress class"; + } + + } // list class + + } // list mc-fr-profile-ingress + + list mc-fr-profile-egress { + key "mc-fr-egress-prof-index"; + max-elements 128; + description "Enter the mc-fr-profile-egress context"; + + leaf mc-fr-egress-prof-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "Egress MultiClass Frame Relay Profile Index"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + list class { + key "class-id"; + description "Enter the class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "0..3"; + } + } + description "Frame-relay egress class per multi-class frame-relay egress profile"; + } + + leaf mir { + type uint32 { + range "1..100"; + } + description "Minimum information rate (MIR) as percentage"; + } + + leaf max-queue-size { + type uint32 { + range "1..1000"; + } + default "10"; + description "Buffer queue size"; + } + + leaf weight { + type uint32 { + range "1..100"; + } + description "Weight of this multiclass class as a percentage"; + } + + } // list class + + } // list mc-fr-profile-egress + + list policer-control-policy { + key "policer-control-policy-name"; + max-elements 2047; + description "Enter the policer-control-policy context"; + + leaf policer-control-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of Policer Control Policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container root { + description "Enter the root context"; + + leaf max-rate { + type types-qos:max-rate; + default "max"; + description "Maximum frame based bandwidth limit of this policer"; + } + + leaf profile-preferred { + type boolean; + default "false"; + description "Provide a preference to consume PIR bucket tokens at a given priority level"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-thresh-separation { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Minimum amount of separation buffer space"; + } + + list priority { + key "priority-level"; + description "Enter the priority context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Minimum amount of cumulative buffer space"; + } + + leaf fixed-mbs { + type boolean; + default "false"; + description "Consider cumulative buffer space to be fixed"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container root + + list tier { + key "tier-id"; + description "Enter the tier context"; + + leaf tier-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..2"; + } + } + description "Tier for policer control policer arbiter"; + } + + list arbiter { + key "arbiter-name"; + description "Enter the arbiter context"; + + leaf arbiter-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Arbiter name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf rate { + type types-qos:max-rate; + default "max"; + description "Maximum frame based bandwidth limit"; + } + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Specifies the arbiter to which this policer is feeding to."; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Specifies the level of priority while feeding to the parent."; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description + "Specifies the weight that needs to be used by the arbiter to which + this policer is feeding to."; + } + + } // container arbiter-parent + + } // list arbiter + + } // list tier + + } // list policer-control-policy + + container queue-group-templates { + description "Enter the queue-group-templates context"; + + container ingress { + description "Enter the ingress context"; + + list queue-group { + key "ingress-queue-group-name"; + description "Enter the queue-group context"; + + leaf ingress-queue-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of Ingress Queue Group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-queue-id; + } + description "Ingress Queue-Group Queue identifier"; + } + + leaf multipoint { + type boolean; + sros-ext:immutable; + default "false"; + description "Create an ingress multipoint queue"; + } + + leaf queue-type { + type types-qos:queue-group-queue-type; + sros-ext:immutable; + default "best-effort"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf queue-mode { + type types-qos:queue-mode; + sros-ext:immutable; + default "priority"; + description + "Specifies the mode in which the queue is operating. + + This attribute is associated with the queue at the time of creation and + cannot be modified thereafter."; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + default "auto"; + description "Reserved buffer space for the queue"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Maximum buffer space that is allowed for queue"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + leaf packet-byte-offset { + type types-qos:per-packet-offset; + default "0"; + description "Value of the adjustment on the size of each packet for queue accounting"; + } + + leaf cir-non-profiling { + type boolean; + default "false"; + description + "Specifies that the CIR affect the scheduling priority of a queue but + does not modify the profile of packets depending on the specified CIR."; + } + + container scheduler-parent { + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + description "Scheduler to which this queue feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Level of priority while feeding to the parent"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container scheduler-parent + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Adaptation rule to apply when assigning the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + leaf fir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the operational FIR + value. The adaptation rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate; + units "kilobps"; + default "max"; + description "CIR"; + } + + choice cir-and-fir-or-policed { + default "cir-and-fir"; + case cir-and-fir { + + leaf cir { + type types-qos:queue-cir-rate; + units "kilobps"; + default "0"; + description "Specifies administrative CIR."; + } + + leaf fir { + type types-qos:queue-cir-rate; + units "kilobps"; + default "0"; + description "Specifies administrative FIR."; + } + + } + case police { + + leaf police { + type empty; + description + "Specifies that the out of profile traffic feeding into the physical queue + instance should be dropped"; + } + + } + } + } // container rate + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + } // container drop-tail + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id { + range "1..32"; + } + } + description "Ingress Queue-Group Policer identifier"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority 'violate' threshold of PIR leaky bucket of this policer"; + } + + leaf high-prio-only { + type types-qos:burst-percent; + description "Percentage of PIR leaky bucket's MBS of this policer that is reserved for high priority traffic"; + } + + leaf packet-byte-offset { + type types-qos:per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf profile-capped { + type boolean; + default "false"; + description "Enforce a limit on the profile"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:policer-pir-rate; + units "kilobps"; + default "max"; + description "CIR"; + } + + leaf cir { + type types-qos:policer-cir-rate; + units "kilobps"; + default "0"; + description "CIR"; + } + + } // container rate + + } // list policer + + } // list queue-group + + } // container ingress + + container egress { + description "Enter the egress context"; + + list queue-group { + key "egress-queue-group-name"; + description "Enter the queue-group context"; + + leaf egress-queue-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of Egress Queue Group"; + } + + leaf description { + type types-sros:description-or-empty; + description "Text description"; + } + + leaf queues-hqos-manageable { + type boolean; + default "true"; + description "Manage queues through the Hierarchical QoS process"; + } + + leaf hs-attachment-policy { + type types-sros:named-item; + description "HS attachment policy applied"; + } + + container hsmda-queues { + description "Enter the hsmda-queues context"; + + leaf low-burst-max-class { + type uint32 { + range "1..8"; + } + default "8"; + description + "Specifies which class should use the low priority burst threshold. + + Use the low priority burst threshold for all classes starting from 1, + up to and including that specified by this value. + + Use the high priority burst threshold for all classes greater than the this + value, up to and including class 8."; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Packet byte offset to use for the HSMDA egress queues"; + } + + leaf wrr-policy { + type types-sros:named-item; + description "WRR policy to use on this HSMDA egress queue"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress HSMDA queue ID"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..1000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf mbs { + type types-qos:hsmda-queue-burst-size; + units "bytes"; + description "Buffer space allowed for the queue"; + } + + leaf rate { + type types-qos:hsmda-queue-pir-rate; + default "max"; + description "PIR rate"; + } + + leaf slope-policy { + type types-sros:named-item; + description "Name of the slope policy which overrides the default policy for the named buffer pool"; + } + + leaf wrr-weight { + type types-qos:hsmda-wrr-weight; + default "1"; + description "Weight value for the HSMDA queue"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list queue + + } // container hsmda-queues + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name"; + } + + container queue { + description "Enter the queue context"; + + choice queue-or-none { + default "none"; + case queue-id { + + leaf queue-id { + type types-qos:egress-queue-id; + description "Queue defined in forwarding class mapping"; + } + + } + case none { + + leaf none { + type empty; + description "No mid-pool is associated with this parent-pool"; + } + + } + } + } // container queue + + } // list fc + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress Queue-Group queue identifier"; + } + + leaf queue-type { + type enumeration { + enum "expedited" { value 1; } + enum "best-effort" { value 3; } + } + default "best-effort"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf cbs { + type union { + type int32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + default "auto"; + description "Reserved buffer space for the queue"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Buffer space allowed for the queue"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Packet byte offset for addition of policing information"; + } + + leaf dynamic-mbs { + type boolean; + default "false"; + description "Allow modifying of the MBS size for a queue to maintain maximum latency for traffic"; + } + + leaf queue-delay { + type uint32 { + range "1..5000"; + } + units "milliseconds"; + description "Target queue delay for forwarding packets through this queue"; + } + + leaf hs-alt-port-class-pool { + type boolean; + default "false"; + description "Use HS alternate class port pool buffer for traffic"; + } + + leaf hs-wrr-weight { + type types-qos:hs-wrr-weight; + default "1"; + description "Weighted Round Robin (WRR) weight to parent with this queue into the scheduler"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Scheduling class weight"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:queue-cir-rate; + units "kilobps"; + default "0"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Administrative CIR percent"; + } + + } // container percent-rate + + } + } + choice parent-mapping { + case scheduler-parent { + + container scheduler-parent { + presence "Specifies whether this queue is parented by scheduler."; + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + mandatory true; + description "Scheduler to which this queue feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Level of priority while feeding to the parent"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container scheduler-parent + + } + case port-parent { + + container port-parent { + presence "Specifies whether this queue is parented by port-level scheduler."; + description "Enter the port-parent context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + } // container port-parent + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container wred-queue { + description "Enter the wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Slope policy name"; + } + + leaf mode { + type types-qos:wred-queue-mode; + description "Generic pool association of the queue to allow queue-specific WRED slopes"; + } + + leaf usage { + type types-qos:wred-queue-slope-usage; + description "Specifies which slopes are active for given slope-mode"; + } + + } // container wred-queue + + container drop-tail { + description "Enter the drop-tail context"; + + container highplus { + description "Enter the highplus context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail being that is reduced from MBS for high plus profile packets"; + } + + } // container highplus + + container high { + description "Enter the high context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail being that is reduced from MBS for high profile packets"; + } + + } // container high + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + container exceed { + description "Enter the exceed context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail that is reduced from MBS for exceed profile packets"; + } + + } // container exceed + + } // container drop-tail + + container hs-wred-queue { + description "Enter the hs-wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Slope policy name"; + } + + } // container hs-wred-queue + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-policer-id; + } + description "Egress Queue-Group Policer identifier"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority 'violate' threshold of PIR leaky bucket of this policer"; + } + + leaf high-prio-only { + type types-qos:burst-percent; + description "Percentage of PIR leaky bucket's MBS of this policer that is reserved for high priority traffic"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf profile-capped { + type boolean; + default "false"; + description "Enforce a limit on the profile"; + } + + leaf stat-mode { + type types-qos:egress-policer-stat-mode; + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + leaf exceed-pir { + type boolean; + default "false"; + description "Allow forwarding of packets with an exceed-profile state and traffic exceeding the PIR"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:policer-pir-rate; + units "kilobps"; + default "max"; + description "CIR"; + } + + leaf cir { + type types-qos:policer-cir-rate; + units "kilobps"; + default "0"; + description "CIR"; + } + + } // container rate + + } // list policer + + list hs-wrr-group { + key "group-id"; + description "Enter the hs-wrr-group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hs-wrr-group-id; + } + description "HS WRR group identifier"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Weight of scheduling class"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + leaf rate { + type union { + type uint32 { + range "1..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + } + case percent-rate { + + leaf percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list hs-wrr-group + + } // list queue-group + + } // container egress + + } // container queue-group-templates + + list network { + key "network-policy-name"; + max-elements 255; + description "Enter the network context"; + + leaf network-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:network-policy-name; + } + description "Name of this network QoS policy"; + } + + leaf policy-id { + type types-qos:qos-policy-id; + sros-ext:immutable; + description "Network QoS policy identifier."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy"; + } + + container ingress { + description "Enter the ingress context"; + + leaf ler-use-dscp { + type boolean; + default "false"; + description "Honor the DSCP markings instead of the LSP-EXP bits"; + } + + container default-action { + description "Enter the default-action context"; + + leaf fc { + type types-sros:fc-name; + default "be"; + description "Default forwarding class to use while classifying the ingress traffic"; + } + + leaf profile { + type types-qos:profile; + default "out"; + description "Default profile for the ingressing traffic"; + } + + } // container default-action + + list dot1p { + key "dot1p-value"; + description "Enter the dot1p context"; + + leaf dot1p-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dot1p-priority; + } + description "Dot1p value to match in the packet"; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Forwarding class"; + } + + leaf profile { + type types-qos:profile-de; + mandatory true; + description "Default profile to be used for the ingressing traffic"; + } + + } // list dot1p + + list dscp { + key "dscp-name"; + description "Enter the dscp context"; + + leaf dscp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dscp-name; + } + description + "Specifies the Differentiated Services Code Point (DSCP) name for + which mapping is done."; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Forwarding class"; + } + + leaf profile { + type types-qos:profile; + mandatory true; + description "Default profile to use for the ingressing traffic"; + } + + } // list dscp + + list lsp-exp { + key "lsp-exp-value"; + description "Enter the lsp-exp context"; + + leaf lsp-exp-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:lsp-exp-value; + } + description "Value to assign the unique MPLS LSP EXP value that will match the lsp-exp rule"; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Forwarding class"; + } + + leaf profile { + type types-qos:profile; + mandatory true; + description "Default profile to use for the ingressing traffic"; + } + + } // list lsp-exp + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf multicast-policer { + type types-qos:network-ingress-policer-id; + description "Policer to be used for multicast traffic"; + } + + leaf policer { + type types-qos:network-ingress-policer-id; + description "Policer to be used for unicast traffic"; + } + + leaf broadcast-policer { + type types-qos:network-ingress-policer-id; + description "Policer to be used for broadcast traffic"; + } + + leaf unknown-policer { + type types-qos:network-ingress-policer-id; + description "Plicer to be used for unknown traffic"; + } + + } // container fp-redirect-group + + } // list fc + + container ip-criteria { + description "Enter the ip-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "Network Ingress IP Criteria Entry Index"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf protocol { + type types-sros:ipv4-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet."; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + } + description + "Matches when the packet is a fragment (true) or when the packet is not + a fragment (false) or matches all packets fragmented or not (off)"; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "Specifies ip-prefix-list used as match criterion."; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "Specifies ip-prefix-list used as match criterion."; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Specifies the less than value as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Specifies the equal than value as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Specifies the greater than value as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Specifies the less than value as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Specifies the equal than value as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Specifies the greater than value as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:profile; + description "Default profile for the matching traffic"; + } + + } // container action + + } // list entry + + } // container ip-criteria + + container ipv6-criteria { + description "Enter the ipv6-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "Network Ingress IPv6 Criteria Entry Index"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf next-header { + type types-sros:ipv6-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + enum "first-only" { value 4; } + enum "non-first-only" { value 5; } + } + description + "Matches when the packet is a fragment (true) or when the packet is not + a fragment (false) or matches all packets fragmented or not (off)"; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet"; + } + + } + case ipv6-prefix-list { + + leaf ipv6-prefix-list { + type types-sros:named-item; + description + "Specifies the ip-prefix-list used as match criterion for the + ip address."; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet"; + } + + } + case ipv6-prefix-list { + + leaf ipv6-prefix-list { + type types-sros:named-item; + description + "Specifies the ip-prefix-list used as match criterion for the + ip address."; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Specifies the less than value as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Specifies the equal than value as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Specifies the greater than value as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Specifies the less than value as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Specifies the equal than value as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Specifies the greater than value as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:profile; + description "Default profile for the matching traffic"; + } + + } // container action + + } // list entry + + } // container ipv6-criteria + + } // container ingress + + container egress { + description "Enter the egress context"; + + container remark-trusted { + presence "Specifies if the system will remark the egress packets or not."; + description "Enter the remark-trusted context"; + + leaf force-egress-marking { + type boolean; + default "false"; + description "Remark DSCP bits in the internal IP header"; + } + + } // container remark-trusted + + list dscp { + key "dscp-name"; + description "Enter the dscp context"; + + leaf dscp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dscp-name; + } + description + "Specifies the Differentiated Services Code Point (DSCP) name for + which mapping is done."; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + mandatory true; + description "Default profile to use for the ingressing traffic"; + } + + } // list dscp + + list prec { + key "prec-value"; + description "Enter the prec context"; + + leaf prec-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:precedence-value; + } + description "Precedence value for which mapping is performed"; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + mandatory true; + description "Default profile to use for the ingressing traffic"; + } + + } // list prec + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name"; + } + + leaf dot1p-in-profile { + type types-qos:dot1p-priority; + description "Dot1p marking for in-profile marking"; + } + + leaf dot1p-out-profile { + type types-qos:dot1p-priority; + description "Dot1p marking for out-of-profile marking"; + } + + leaf dscp-in-profile { + type types-qos:network-egress-dscp-name; + default "be"; + description "DSCP marking for in-profile marking"; + } + + leaf dscp-out-profile { + type types-qos:network-egress-dscp-name; + default "be"; + description "DSCP marking for out-of-profile marking"; + } + + leaf lsp-exp-in-profile { + type types-qos:lsp-exp-value; + description "LSP-EXP marking for in-profile marking"; + } + + leaf lsp-exp-out-profile { + type types-qos:lsp-exp-value; + description "LSP-EXP marking for out-of-profile marking"; + } + + container de-mark { + presence "Specifies whether to set DE value in the frames."; + description "Enter the de-mark context"; + + leaf force { + type types-qos:de-value; + description "DE value"; + } + + } // container de-mark + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf queue { + type types-qos:egress-queue-id; + description "Queue to be used"; + } + + leaf policer { + type types-qos:egress-policer-id; + description "Policer to be used"; + } + + } // container port-redirect-group + + } // list fc + + container ip-criteria { + description "Enter the ip-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "Network Egress IP Criteria Entry Index."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf protocol { + type types-sros:ipv4-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + } + description + "Matches when the packet is a fragment (true) or when the packet is not + a fragment (false) or matches all packets fragmented or not (off)."; + } + + leaf icmp-type { + type types-filter:ipv4-match-icmp-types; + description "ICMP type to match."; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet."; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet."; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet."; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address to match with source IP of the packet."; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Specifies the default profile to be used for the matching traffic."; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf queue { + type types-qos:egress-queue-id; + description "Specifies the queue to use once the matched traffic has been policed."; + } + + leaf policer { + type types-qos:network-egress-policer-id; + description "Specifies the policer identifier to be used for the matched traffic."; + } + + } // container port-redirect-group + + } // container action + + } // list entry + + } // container ip-criteria + + container ipv6-criteria { + description "Enter the ipv6-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:entry-id; + } + description "Network Egress IPv6 Criteria Entry Index."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf next-header { + type types-sros:ipv6-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + enum "first-only" { value 4; } + enum "non-first-only" { value 5; } + } + description + "Matches when the packet is a fragment (true) or when the packet is not + a fragment (false) or matches all packets fragmented or not (off)."; + } + + leaf icmp-type { + type types-filter:ipv6-match-icmp-types; + description "ICMP type to match."; + } + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet."; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet."; + } + + } + } + } // container dst-ip + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet."; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address to match with source IP of the packet."; + } + + } + } + } // container src-ip + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' assigned as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' assigned as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' assigned as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Specifies the default profile to be used for the matching traffic."; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf queue { + type types-qos:egress-queue-id; + description "Specifies the queue to use once the matched traffic has been policed."; + } + + leaf policer { + type types-qos:network-egress-policer-id; + description "Specifies the policer identifier to be used for the matched traffic."; + } + + } // container port-redirect-group + + } // container action + + } // list entry + + } // container ipv6-criteria + + } // container egress + + } // list network + + list port-qos-policy { + key "port-qos-policy-name"; + description "Port QoS Policy Configurations."; + + leaf port-qos-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this Port QoS policy."; + } + + leaf description { + type types-sros:description; + description "Description for this port-qos policy."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + list fc { + key "fc-name"; + description "Port QoS Policy Forwarding Class (FC) Mappings."; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Specifies the forwarding class."; + } + + leaf queue { + type types-qos:egress-queue-id; + description "Specifies the queue to forward the traffic."; + } + + } // list fc + + list queue { + key "queue-id"; + description "Queue Configurations."; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "The port qos policy queue identifier."; + } + + leaf queue-mgmt { + type types-qos:qos-policy-name; + description + "Queue Management determines the queue management policy + attached to this queue."; + } + + leaf wrr-weights { + type uint32 { + range "1..8"; + } + description + "The unicast-multicast Weighted Round Robin(WRR) profile associated + with this queue"; + } + + container adaptation-rule { + description "Specifies PIR and CIR adaptation rules."; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing + the operational PIR value. The adaptation + rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the + operational CIR value. The adaptation rule + specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container scheduler-mode { + description "Specifies Scheduler Mode of this queue."; + + choice wfq-or-strict-priority { + default "wfq"; + case wfq { + + container wfq { + description "Specifies Wfq of this queue."; + + leaf pir-weight { + type uint32 { + range "1..255"; + } + default "1"; + description + "Specifies the weight that needs to be + used by the arbiter to which this + queue would be feeding to."; + } + + container percent-rate { + description "Specifies PIR and CIR Percent Rate."; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Specifies the administrative PIR percent."; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative CIR percent."; + } + + } // container percent-rate + + } // container wfq + + } + } + } // container scheduler-mode + + } // list queue + + list wrr-weights { + key "wrr-weights-id"; + description "Wrr Weights Configurations."; + + leaf wrr-weights-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "The port qos policy wrr weights identifier."; + } + + leaf mc-weight { + type types-qos:port-qos-policy-wrr-weight; + default "1"; + description + "The weight to be used by the multicast queue that feeds + into this WRR scheduler."; + } + + leaf uc-weight { + type types-qos:port-qos-policy-wrr-weight; + default "1"; + description + "The weight to be used by the unicast queue that feeds + into this WRR scheduler."; + } + + } // list wrr-weights + + } // list port-qos-policy + + list vlan-qos-policy { + key "vlan-qos-policy-name"; + description "Vlan QoS Policy Configurations."; + + leaf vlan-qos-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this Vlan QoS policy."; + } + + leaf description { + type types-sros:description; + description "Description for this vlan-qos policy."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + list cir-weight-profile { + key "cir-weight-profile-id"; + description "CIR Weight Profile Configurations."; + + leaf cir-weight-profile-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..2"; + } + } + description "The vlan qos policy cir weight profile identifier."; + } + + leaf weight { + type uint32 { + range "1..1024"; + } + default "1"; + description + "The weight that needs to be used until the + committed rate by the vlan policy to which this queue + would be feeding to."; + } + + } // list cir-weight-profile + + list fc { + key "fc-name"; + description "Vlan QoS Policy Forwarding Class (FC) Mappings."; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Specifies the forwarding class."; + } + + leaf queue { + type types-qos:egress-queue-id; + description "Specifies the queue to forward the traffic."; + } + + } // list fc + + list queue { + key "queue-id"; + description "Queue Configurations."; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "The vlan qos policy queue identifier."; + } + + leaf queue-mgmt { + type types-qos:qos-policy-name; + description + "Queue Management determines the queue management policy + attached to this queue."; + } + + container adaptation-rule { + description "Specifies PIR and CIR adaptation rules."; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing + the operational PIR value. The adaptation + rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the + operational CIR value. The adaptation rule + specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container queue-type { + description "Specifies Queue Type of this queue."; + + choice best-effort-hi-low { + default "best-effort"; + case best-effort { + + container best-effort { + description "Indicates that the queue is non-expedited."; + + leaf cir-weight-profile { + type uint32 { + range "1..2"; + } + default "1"; + description + "Specifies the weight profile identifier of + vlan-qos policy that needs to be used by the + arbiter to which this + queue would be feeding to."; + } + + container percent-rate { + description "Specifies PIR and CIR Percent Rate."; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Specifies the administrative PIR percent."; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative CIR percent."; + } + + } // container percent-rate + + } // container best-effort + + } + case expedite-hi { + + container expedite-hi { + description + "Indicates that the queue will be expedited at the + highest level until it reaches its committed rate."; + + container percent-rate { + description "Specifies PIR and CIR Percent Rate."; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Specifies the administrative PIR percent."; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative CIR percent."; + } + + } // container percent-rate + + } // container expedite-hi + + } + case expedite-lo { + + container expedite-lo { + description + "Indicates that the committed rate of the queue will be + expedited at a level lower than the 'expedite-hi' queues."; + + container percent-rate { + description "Specifies PIR and CIR Percent Rate."; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Specifies the administrative PIR percent."; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Specifies the administrative CIR percent."; + } + + } // container percent-rate + + } // container expedite-lo + + } + } + } // container queue-type + + } // list queue + + } // list vlan-qos-policy + + list queue-mgmt-policy { + key "queue-mgmt-policy-name"; + description "Queue Management Policy Configurations."; + + leaf queue-mgmt-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this Queue Management policy."; + } + + leaf description { + type types-sros:description; + description "Description for this queue-mgmt-policy."; + } + + leaf mbs { + type union { + type types-qos:kilobytes { + range "1..1500000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + default "6250"; + description "The amount of buffer space allowed for the queue."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + leaf time-average-factor { + type uint32 { + range "0..31"; + } + default "7"; + description "Time average factor of the policy."; + } + + container high-slope { + description "High Priority RED slope parameters."; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Specifies the admin state for the high priority RED slope."; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "70"; + description + "The percentage of the buffer utilized after which the + drop probability starts to rise above 0."; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "90"; + description + "The percentage of the buffer utilized after which the + drop probability is 100 percent. This implies that + all packets beyond this point will be dropped."; + } + + leaf max-prob { + type uint32 { + range "1..99"; + } + default "75"; + description + "The drop probability increases steadily from 0 at + high start-average up to high max-probability at + high max-average."; + } + + } // container high-slope + + container low-slope { + description "Low Priority RED slope parameters."; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Specifies the admin state for the low priority RED slope."; + } + + leaf start-avg { + type uint32 { + range "0..100"; + } + default "50"; + description + "The percentage of the buffer utilized after which the + drop probability starts to rise above 0."; + } + + leaf max-avg { + type uint32 { + range "0..100"; + } + default "75"; + description + "The percentage of the buffer utilized after which the + drop probability is 100 percent. This implies that all + packets beyond this point will be dropped."; + } + + leaf max-prob { + type uint32 { + range "1..99"; + } + default "75"; + description + "The drop probability increases steadily from 0 at low + start-average up to low max-probability at + low max-average."; + } + + } // container low-slope + + } // list queue-mgmt-policy + + list ingress-classification-policy { + key "ingress-classification-policy-name"; + description "Ingress classification Qos policies"; + + leaf ingress-classification-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this ingress classification QoS policy."; + } + + leaf description { + type types-sros:description; + description "Description for this ingress classifcation policy."; + } + + leaf allow-egress-dscp-exp-remarking { + type boolean; + default "false"; + description + "Specifies whether to enable remarking for DSCP and Precedence based on + the profile state of a packet being forwarded."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + container default-action { + description "Configuration default-action parameters."; + + leaf fc { + type types-sros:fc-name; + default "be"; + description + "Specifies the default forwarding class to be used while classifying + the ingress traffic."; + } + + leaf profile { + type types-qos:profile; + default "out"; + description "Specifies the default profile to be used for the ingressing traffic."; + } + + } // container default-action + + list dot1p { + key "dot1p-value"; + description "Ingress classification Policy Ingress 802.1 priority Mappings."; + + leaf dot1p-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dot1p-priority; + } + description "The dot1p value to match in the packet."; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Specifies the forwarding class."; + } + + leaf profile { + type types-qos:profile-de; + mandatory true; + description "Specifies the default profile to be used for the ingressing traffic."; + } + + } // list dot1p + + list dscp { + key "dscp-name"; + description "Ingress classification Policy Ingress DSCP Mappings."; + + leaf dscp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dscp-name; + } + description + "Specifies the Differentiated Services Code Point (DSCP) name for + which mapping is done."; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Specifies the forwarding class."; + } + + leaf profile { + type types-qos:profile; + mandatory true; + description "Specifies the default profile to be used for the ingressing traffic."; + } + + } // list dscp + + list lsp-exp { + key "lsp-exp-value"; + description "Ingress classification Policy Ingress LSP-EXP mappings."; + + leaf lsp-exp-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:lsp-exp-value; + } + description "The lsp-exp bit value for which mapping is done."; + } + + leaf fc { + type types-sros:fc-name; + mandatory true; + description "Specifies the forwarding class."; + } + + leaf profile { + type types-qos:profile; + mandatory true; + description "Specifies the default profile to be used for the ingressing traffic."; + } + + } // list lsp-exp + + } // list ingress-classification-policy + + list network-ingress { + key "network-ingress-policy-name"; + description "Network-Ingress QoS policies."; + + leaf network-ingress-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this network-ingress QoS policy."; + } + + leaf description { + type types-sros:description; + description "Description for this network-ingress policy."; + } + + leaf ingress-classification-policy { + type types-qos:qos-policy-name; + default "network-default"; + description "Attach ingress classification policy."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + list fc { + key "fc-name"; + description "Network-ingress forwarding-class to policer mappings."; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:sap-ingress-fc-name; + } + description "Forwarding class for which this mapping is performed"; + } + + leaf multicast-policer { + type types-qos:ingress-policer-id; + description + "Specifies the policer identifier to be used for the multicast traffic + in this forwarding class."; + } + + leaf policer { + type types-qos:ingress-policer-id; + description + "Specifies the policer identifier to be used for the normal traffic + in this forwarding class."; + } + + } // list fc + + list policer { + key "policer-id"; + description "Network-Ingress Policer."; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id; + } + description "SAP-ingress policer identifier"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Specifies the 'exceed' threshold of the CIR leaky bucket of this policer."; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Specifies the maximum burst size to be used in conjunction with the PIR."; + } + + leaf stat-mode { + type enumeration { + enum "no-stats" { value 0; } + enum "offered-profile-with-discards" { value 10; } + } + default "no-stats"; + description "Specifies the mode of statistics collected."; + } + + container adaptation-rule { + description "Specifies PIR and CIR adaptation rules."; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the operational PIR + value. The adaptation rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description + "The adaptation rule to be used while computing the operational CIR + value. The adaptation rule specifies the rules to compute the + operational values while maintaining minimum offset."; + } + + } // container adaptation-rule + + container rate { + description "Specifies PIR and CIR Kbps Rate."; + + leaf pir { + type union { + type uint32 { + range "1..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "max"; + description "Specifies the administrative PIR."; + } + + leaf cir { + type union { + type uint32 { + range "0..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "0"; + description "Specifies the administrative CIR."; + } + + } // container rate + + } // list policer + + } // list network-ingress + + list sap-egress { + key "sap-egress-policy-name"; + description "Enter the sap-egress context"; + + leaf sap-egress-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "Name of this sap-egress QoS policy"; + } + + leaf policy-id { + type types-qos:qos-policy-id; + sros-ext:immutable; + description "The sap-egress QoS policy identifier."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf ethernet-ctag { + type boolean; + default "false"; + description "Tag value for dot1p and DE (Drop-Eligible) that are used by all dot1-p entries"; + } + + leaf parent-location { + type enumeration { + enum "auto" { value 1; } + enum "sla" { value 2; } + } + default "auto"; + description "Location in which queues can find their parent scheduler in case the parent scheduler if not found"; + } + + leaf policers-hqos-manageable { + type boolean; + default "false"; + description "Manage policers through the Hierarchical QoS process"; + } + + leaf post-policer-mapping { + type types-sros:named-item; + description "Post policer mapping policy applied to this policy"; + } + + leaf hs-attachment-policy { + type types-sros:named-item; + description "HS attachment policy applied"; + } + + container subscriber-mgmt { + description "Enter the subscriber-mgmt context"; + + container pcc-rule-entry { + description "Enter the pcc-rule-entry context"; + + container range { + presence "true"; + description "Enter the range context"; + + leaf start { + type types-qos:entry-id; + mandatory true; + description + "Specifies the starting entry at which the pcc-rule ip-criteria entries that are + received from Diameter and that are shared across several hosts."; + } + + leaf end { + type types-qos:entry-id; + mandatory true; + description + "Specifies the ending entry at which the pcc-rule ip-criteria entries that are + received from Diameter and that are shared across several hosts."; + } + + } // container range + + } // container pcc-rule-entry + + container dynamic-policer { + description "Enter the dynamic-policer context"; + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority 'violate' threshold of PIR leaky bucket of this policer"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type enumeration { + enum "no-stats" { value 0; } + enum "minimal" { value 1; } + enum "offered-profile-no-cir" { value 2; } + enum "offered-total-cir" { value 3; } + enum "offered-profile-cir" { value 4; } + enum "offered-limited-capped-cir" { value 5; } + enum "offered-profile-capped-cir" { value 6; } + } + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + container policer-id-range { + presence "true"; + description "Enter the policer-id-range context"; + + leaf start { + type types-qos:ingress-policer-id; + mandatory true; + description + "Specifies the starting place at which dynamic policers required for the pcc-rule + ip-criteria entries that are received from Diameter and that are shared + across several hosts will be inserted."; + } + + leaf end { + type types-qos:ingress-policer-id; + mandatory true; + description + "Specifies the ending place at which dynamic policers required for the pcc-rule + ip-criteria entries that are received from Diameter and that are shared + across several hosts will be inserted."; + } + + } // container policer-id-range + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + } // container dynamic-policer + + } // container subscriber-mgmt + + container hsmda-queues { + description "Enter the hsmda-queues context"; + + leaf low-burst-max-class { + type uint32 { + range "1..8"; + } + default "8"; + description "Class that uses low priority burst threshold"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Packet byte offset to use for the HSMDA egress queues"; + } + + leaf wrr-policy { + type types-sros:named-item; + description "Weighted Round Robin (WRR) policy"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress HSMDA queue ID"; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..1000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf mbs { + type types-qos:hsmda-queue-burst-size; + units "bytes"; + description "Buffer space allowed for the queue"; + } + + leaf rate { + type types-qos:hsmda-queue-pir-rate; + default "max"; + description "PIR rate"; + } + + leaf slope-policy { + type types-sros:named-item; + description "Name of the slope policy which overrides the default policy for the named buffer pool"; + } + + leaf wrr-weight { + type types-qos:hsmda-wrr-weight; + default "1"; + description "Weight value for the HSMDA queue"; + } + + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list queue + + } // container hsmda-queues + + list dot1p { + key "dot1p-value"; + description "Enter the dot1p context"; + + leaf dot1p-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dot1p-priority; + } + description "Dot1p value to match in the packet"; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile-de; + description "Default profile for the ingressing traffic"; + } + + } // list dot1p + + list dscp { + key "dscp-name"; + description "Enter the dscp context"; + + leaf dscp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:dscp-name; + } + description + "Specifies the Differentiated Services Code Point (DSCP) name for + which mapping is done."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Default profile for the ingressing traffic"; + } + + leaf hsmda-counter-override { + type types-qos:egress-hsmda-counter-id; + description + "Specifies the counter to use for all the traffic that matches the specific precedence. + A value of zero implies that the default counters should be used."; + } + + } // list dscp + + list prec { + key "prec-value"; + description "Enter the prec context"; + + leaf prec-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:precedence-value; + } + description "Precedence value for which mapping is performed"; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Default profile for the ingressing traffic"; + } + + leaf hsmda-counter-override { + type types-qos:egress-hsmda-counter-id; + description + "Specifies the counter to use for all the traffic that matches the specific precedence. + A value of zero implies that the default counters should be used."; + } + + } // list prec + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class"; + } + + leaf policer { + type types-qos:sap-egress-policer-id; + description "Policer to forward the traffic"; + } + + choice dscp-or-prec { + case dscp { + + container dscp { + description "Enter the dscp context"; + + leaf in-profile { + type types-qos:dscp-name; + description "DSCP name for in-profile frames"; + } + + leaf out-profile { + type types-qos:dscp-name; + description "DSCP name for out-of-profile frames"; + } + + leaf exceed-profile { + type types-qos:dscp-name; + description "DSCP name for exceed-profile frames"; + } + + } // container dscp + + } + case prec { + + container prec { + description "Enter the prec context"; + + leaf in-profile { + type types-qos:precedence-value; + description "Precedence value for in-profile frames"; + } + + leaf out-profile { + type types-qos:precedence-value; + description "Precedence value for out-of-profile frames"; + } + + leaf exceed-profile { + type types-qos:precedence-value; + description "Precedence for exceed-profile frames"; + } + + } // container prec + + } + } + choice queue-redirection-mapping { + case queue { + + leaf queue { + type types-qos:egress-queue-id; + description "Queue to forward the traffic"; + } + + } + case port-redirect-group-queue { + + container port-redirect-group-queue { + presence "port-redirect-group-queue mappings"; + description "Enter the port-redirect-group-queue context"; + + leaf queue { + type types-qos:egress-queue-id; + description "Queue to forward the traffic"; + } + + } // container port-redirect-group-queue + + } + case queue-group-queue { + + container queue-group-queue { + presence "queue-group mappings"; + description "Enter the queue-group-queue context"; + + leaf queue-group-name { + type types-sros:named-item; + mandatory true; + description "Queue group to which the traffic is forwarded"; + } + + leaf queue { + type types-qos:egress-queue-id; + description "Specifies the queue to forward the traffic."; + } + + leaf instance { + type uint32 { + range "1..65535"; + } + description "SRRP instance whose state is tracked on this IP address"; + } + + } // container queue-group-queue + + } + } + container de-mark { + presence "Specifies whether to set DE value in the frames."; + description "Enter the de-mark context"; + + leaf force { + type types-qos:de-value; + description "DE value"; + } + + } // container de-mark + + container de-mark-inner { + presence "Specifies whether to set DE value in the inner VLAN tag."; + description "Enter the de-mark-inner context"; + + leaf force { + type types-qos:de-value; + description "DE value to set in inner VLAN tag"; + } + + } // container de-mark-inner + + container de-mark-outer { + presence "Specifies whether to set DE value in the outer VLAN tag."; + description "Enter the de-mark-outer context"; + + leaf force { + type types-qos:de-value; + description "DE value to set in outer VLAN tag"; + } + + } // container de-mark-outer + + container dot1p { + description "Enter the dot1p context"; + + leaf in-profile { + type types-qos:dot1p-priority; + description "Dot1p value for in-profile frames"; + } + + leaf out-profile { + type types-qos:dot1p-priority; + description "Dot1p value for out-of-profile frames"; + } + + leaf exceed-profile { + type types-qos:dot1p-priority; + description "Dot1p value for exceed-profile frames"; + } + + } // container dot1p + + container dot1p-inner { + description "Enter the dot1p-inner context"; + + leaf in-profile { + type types-qos:dot1p-priority; + description "Inner Dot1p value for in-profile frames"; + } + + leaf out-profile { + type types-qos:dot1p-priority; + description "Inner Dot1p value for out-of-profile frames"; + } + + } // container dot1p-inner + + container dot1p-outer { + description "Enter the dot1p-outer context"; + + leaf in-profile { + type types-qos:dot1p-priority; + description "Outer Dot1p value for in-profile frames"; + } + + leaf out-profile { + type types-qos:dot1p-priority; + description "Outer Dot1p value for out-of-profile frames"; + } + + leaf exceed-profile { + type types-qos:dot1p-priority; + description "Outer Dot1p value for exceed-profile frames"; + } + + } // container dot1p-outer + + container hsmda { + description "Enter the hsmda context"; + + choice hsmda-queue-redirection-mapping { + case queue { + + leaf queue { + type types-qos:egress-queue-id; + description "HSMDA queue to which traffic is forwarded"; + } + + } + case port-redirect-group-queue { + + container port-redirect-group-queue { + presence "Sap Egress Forwarding Class (FC) hsmda-queue mappings."; + description "Enter the port-redirect-group-queue context"; + + leaf queue { + type types-qos:egress-queue-id; + mandatory true; + description "HSMDA queue to which traffic is forwarded"; + } + + } // container port-redirect-group-queue + + } + } + } // container hsmda + + } // list fc + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress Queue-Group queue identifier"; + } + + leaf queue-type { + type enumeration { + enum "expedited" { value 1; } + enum "auto-expedited" { value 2; } + enum "best-effort" { value 3; } + } + sros-ext:immutable; + default "auto-expedited"; + description "Priority that this queue receives from the hardware level schedulers"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy"; + } + + leaf avg-frame-overhead { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description + "Specifies the encapsulation overhead, in centipercent, used to + translate packet-based rate to frame-based rate and vice versa."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + default "auto"; + description "Explicit shaping burst size of a queue"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + default "auto"; + description "Reserved buffer space for the queue"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Buffer space allowed for the queue"; + } + + leaf packet-byte-offset { + type int32 { + range "-64..32"; + } + default "0"; + description "Packet byte offset for addition of policing information"; + } + + leaf hs-alt-port-class-pool { + type boolean; + default "false"; + description "Use HS alternate class port pool buffer for traffic"; + } + + leaf hs-wrr-weight { + type types-qos:hs-wrr-weight; + default "1"; + description "Weighted Round Robin (WRR) weight to parent with this queue into the scheduler"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Scheduling class weight"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:queue-cir-rate-maximum; + units "kilobps"; + default "0"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Administrative CIR percent"; + } + + leaf reference-rate { + type enumeration { + enum "port-limit" { value 2; } + enum "local-limit" { value 3; } + } + default "port-limit"; + description "Reference rate as percentage"; + } + + } // container percent-rate + + } + } + choice parent-mapping { + case scheduler-parent { + + container scheduler-parent { + presence "Specifies whether this queue is parented by scheduler."; + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + mandatory true; + description "Scheduler to which this queue feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Level of priority while feeding to the parent"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container scheduler-parent + + } + case port-parent { + + container port-parent { + presence "Specifies whether this queue is parented by port-level scheduler."; + description "Enter the port-parent context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + } // container port-parent + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container wred-queue { + description "Enter the wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Slope policy name"; + } + + leaf mode { + type enumeration { + enum "native" { value 1; } + enum "pool-per-queue" { value 2; } + } + description "Generic pool association of the queue to allow queue-specific WRED slopes"; + } + + leaf usage { + type types-qos:wred-queue-slope-usage; + description "Specifies which slopes are active for given slope-mode"; + } + + } // container wred-queue + + container drop-tail { + description "Enter the drop-tail context"; + + container highplus { + description "Enter the highplus context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail being that is reduced from MBS for high plus profile packets"; + } + + } // container highplus + + container high { + description "Enter the high context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail being that is reduced from MBS for high profile packets"; + } + + } // container high + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Low drop-tail percent from MBS that is reduced"; + } + + } // container low + + container exceed { + description "Enter the exceed context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent; + description "Percentage of drop-tail that is reduced from MBS for exceed profile packets"; + } + + } // container exceed + + } // container drop-tail + + container hs-wred-queue { + description "Enter the hs-wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Slope policy name"; + } + + } // container hs-wred-queue + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:sap-egress-policer-id; + } + description "Sap-Egress Policer identifier."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf adv-config-policy { + type types-sros:named-item; + description "Name of the advanced configuration policy to apply with this queue"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "Exceed threshold of the CIR leaky bucket of this policer"; + } + + leaf dscp-prec-remarking { + type boolean; + default "false"; + description "Remark DSCP and precedence based on the profile state of a forwarding packet"; + } + + leaf exceed-pir { + type boolean; + default "false"; + description "Allow forwarding of packets with an exceed-profile state and traffic exceeding the PIR"; + } + + leaf high-prio-only { + type types-qos:burst-percent; + description "Percentage of PIR leaky bucket's MBS of this policer that is reserved for high priority traffic"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + default "auto"; + description "High priority 'violate' threshold of PIR leaky bucket of this policer"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset; + default "0"; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf profile-capped { + type boolean; + default "false"; + description "Enforce an overall in-profile burst limit to the CIR bucket at egress policer"; + } + + leaf profile-out-preserve { + type boolean; + default "false"; + description "Preserve the color of offered out-of-profile traffic at SAP-egress policer"; + } + + leaf stat-mode { + type types-qos:egress-policer-stat-mode; + default "minimal"; + description "Mode of statistics collected by the policer"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:policer-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:policer-cir-rate-maximum; + units "kilobps"; + default "0"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "0.00"; + description "Administrative CIR percent"; + } + + } // container percent-rate + + } + } + choice parent-mapping { + case scheduler-parent { + + container scheduler-parent { + presence "Specifies whether this queue is parented by scheduler."; + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + mandatory true; + description "Specifies the scheduler to which this queue would be feeding to."; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Specifies the level of priority while feeding to the parent."; + } + + leaf weight { + type types-qos:weight; + default "1"; + description + "Specifies the weight that needs to be used by the scheduler to which + this queue would be feeding to."; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description + "Specifies the level of priority while feeding to the parent. + The level '0' means treat all offered load for this queue as for + the above CIR traffic."; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description + "The weight that needs to be used until the committed rate by the + scheduler to which this queue would be feeding to."; + } + + } // container scheduler-parent + + } + case port-parent { + + container port-parent { + presence "Specifies whether this queue is parented by port-level scheduler."; + description "Enter the port-parent context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description + "Specifies the port priority this queue will use to receive bandwidth from + the port-level scheduler for its above-cir offered load."; + } + + leaf weight { + type types-qos:weight; + default "1"; + description + "Specifies the weight this queue will use to receive bandwidth from the + port-level scheduler for its above-cir offered load."; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description + "Specifies the port priority this queue will use to receive bandwidth from + the port-level scheduler for its within-cir offered load."; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description + "Specifies the weight this queue will use to receive bandwidth from the + port-level scheduler for its within-cir offered load."; + } + + } // container port-parent + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container arbiter-parent { + description "Enter the arbiter-parent context"; + + leaf arbiter-name { + type types-sros:named-item; + description "Arbiter to which this policer feeds"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Weight to be used by the arbiter for feeding this policer"; + } + + } // container arbiter-parent + + } // list policer + + list hs-wrr-group { + key "group-id"; + description "Enter the hs-wrr-group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hs-wrr-group-id; + } + description "HS WRR group identifier"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight; + default "1"; + description "Weight of scheduling class"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + leaf rate { + type union { + type uint32 { + range "1..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + } + case percent-rate { + + leaf percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule; + default "closest"; + description "Constraint used when deriving the operational PIR value"; + } + + } // container adaptation-rule + + } // list hs-wrr-group + + container ip-criteria { + description "Enter the ip-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "IP Criteria Entry Index"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf protocol { + type types-sros:ipv4-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + leaf fragment { + type enumeration { + enum "false" { value 2; } + enum "true" { value 3; } + } + description "Matching criteria to be used for fragmented or non-fragmented packets"; + } + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address mask to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "Specifies ip-prefix-list used as match criterion."; + } + + } + } + } // container src-ip + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv4-address; + type types-sros:ipv4-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv4-address; + description "IP address mask to match with source IP of the packet"; + } + + } + case ip-prefix-list { + + leaf ip-prefix-list { + type types-sros:named-item; + description "Specifies ip-prefix-list used as match criterion."; + } + + } + } + } // container dst-ip + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Default profile for the matching traffic"; + } + + leaf hsmda-counter-override { + type uint32 { + range "1..8"; + } + description "HSMDA counter to use for matching packets"; + } + + leaf policer { + type types-qos:sap-egress-policer-id; + description "Policer identifier for the matched traffic"; + } + + leaf port-redirect-group-queue { + type boolean; + default "false"; + description "Use the queue specified in egress access port queue-group instance"; + } + + leaf queue { + type types-qos:egress-queue-id; + description "Queue to use when the matched traffic is policed by the local policer"; + } + + leaf use-fc-mapped-queue { + type boolean; + default "false"; + description "Redirect policer output to the configured queues"; + } + + } // container action + + } // list entry + + } // container ip-criteria + + container ipv6-criteria { + description "Enter the ipv6-criteria context"; + + list entry { + key "entry-id"; + description "Enter the entry context"; + + leaf entry-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..65535"; + } + } + description "IP Criteria Entry Index"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container match { + description "Enter the match context"; + + leaf next-header { + type types-sros:ipv6-match-protocol; + description "IP protocol to match"; + } + + leaf dscp { + type types-qos:dscp-name; + description "DSCP value to match in the packet"; + } + + container src-port { + description "Enter the src-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container src-port + + container dst-port { + description "Enter the dst-port context"; + + choice port-match-mapping { + case lt { + + leaf lt { + type int32 { + range "0..65535"; + } + description "Value 'less than' as match condition"; + } + + } + case eq { + + leaf eq { + type int32 { + range "0..65535"; + } + description "Value 'equal to' as match condition"; + } + + } + case gt { + + leaf gt { + type int32 { + range "0..65535"; + } + description "Value 'greater than' as match condition"; + } + + } + case range { + + container range { + description "Enter the range context"; + + leaf start { + type int32 { + range "0..65535"; + } + description "Start value of range"; + } + + leaf end { + type int32 { + range "0..65535"; + } + description "End value for range"; + } + + } // container range + + } + } + } // container dst-port + + container src-ip { + description "Enter the src-ip context"; + + choice src-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with source IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address mask to match with source IP of the packet"; + } + + } + } + } // container src-ip + + container dst-ip { + description "Enter the dst-ip context"; + + choice dst-ip { + case address-and-mask-or-prefix { + + leaf address { + type union { + type types-sros:ipv6-address; + type types-sros:ipv6-prefix-with-host-bits; + } + description "IP address to match with destination IP of the packet"; + } + + leaf mask { + type types-sros:ipv6-address; + description "IP address mask to match with destination IP of the packet"; + } + + } + } + } // container dst-ip + + } // container match + + container action { + description "Enter the action context"; + + leaf type { + type types-qos:criteria-action-type; + default "ignore-match"; + description "Specified whether the criteria entry is active or in-active."; + } + + leaf fc { + type types-sros:fc-name; + description "Forwarding class"; + } + + leaf profile { + type types-qos:egress-profile; + description "Default profile for the matching traffic"; + } + + leaf hsmda-counter-override { + type uint32 { + range "1..8"; + } + description "HSMDA counter to use for matching packets"; + } + + leaf policer { + type types-qos:sap-egress-policer-id; + description "Policer identifier for the matched traffic"; + } + + leaf port-redirect-group-queue { + type boolean; + default "false"; + description "Use the queue specified in egress access port queue-group instance"; + } + + leaf queue { + type types-qos:egress-queue-id; + description "Queue to use when the matched traffic is policed by the local policer"; + } + + leaf use-fc-mapped-queue { + type boolean; + default "false"; + description "Redirect policer output to the configured queues"; + } + + } // container action + + } // list entry + + } // container ipv6-criteria + + } // list sap-egress + + list scheduler-policy { + key "scheduler-policy-name"; + max-elements 2047; + description "Enter the scheduler-policy context"; + + leaf scheduler-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf frame-based-accounting { + type boolean; + default "false"; + description "Use frame-based accounting for schedulers and children within scheduler policy"; + } + + list tier { + key "tier-id"; + description "Enter the tier context"; + + leaf tier-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..3"; + } + } + description "Tier for scheduler-policy scheduler"; + } + + leaf parent-location { + type enumeration { + enum "auto" { value 1; } + enum "sub" { value 2; } + enum "vport" { value 3; } + } + default "auto"; + description "Location in which the tier 1 schedulers can find their parent"; + } + + list scheduler { + key "scheduler-name"; + description "Enter the scheduler context"; + + leaf scheduler-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf limit-unused-bandwidth { + type boolean; + default "false"; + description "Enable aggregate rate overrun protection"; + } + + choice parent-mapping { + case scheduler-parent { + + container scheduler-parent { + presence "Specifies whether this queue is parented by scheduler."; + description "Enter the scheduler-parent context"; + + leaf scheduler-name { + type types-sros:named-item; + mandatory true; + description "Scheduler to which this queue would be feeding to"; + } + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Level of priority while feeding to the parent"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Level of priority while feeding to the parent"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "1"; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container scheduler-parent + + } + case port-parent { + + container port-parent { + presence "Specifies whether this queue is parented by port-level scheduler."; + description "Enter the port-parent context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf weight { + type types-qos:weight; + default "1"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Port priority that this queue uses to receive bandwidth from the port level scheduler"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description "Weight that this queue uses to receive bandwidth from the port level scheduler"; + } + + } // container port-parent + + } + } + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:sched-pir-rate; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:sched-cir-rate; + units "kilobps"; + default "sum"; + description "Administrative CIR"; + } + + } // container rate + + } // list scheduler + + } // list tier + + } // list scheduler-policy + + list port-scheduler-policy { + key "name"; + description "Enter the port-scheduler-policy context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of this port scheduler policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf dist-lag-rate-shared { + type boolean; + default "false"; + description "Share rates when the port is part of a LAG configured in distribute mode"; + } + + leaf monitor-threshold { + type uint32 { + range "0..100"; + } + default "0"; + description + "Specifies the threshold level that should be monitored. + It is a percentage of the max-rate or max-rate-percent"; + } + + choice max-rate-or-percent-rate { + default "max-rate"; + case max-rate { + + leaf max-rate { + type types-qos:max-rate; + default "max"; + description "Explicit maximum frame based bandwidth limit"; + } + + } + case max-percent-rate { + + leaf max-percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Specifies the explicit maximum frame based bandwidth percentage"; + } + + } + } + container orphan-overrides { + description "Enter the orphan-overrides context"; + + leaf level { + type types-qos:hierarchy-level; + default "1"; + description "Specifies the port priority of orphaned queues and scheduler that are above-cir"; + } + + leaf weight { + type types-qos:weight; + default "0"; + description "Specifies the weight of orphaned queues and scheduler that are above-cir"; + } + + leaf cir-level { + type types-qos:cir-level; + default "0"; + description "Specifies the port priority of orphaned queues and scheduler that are within-cir"; + } + + leaf cir-weight { + type types-qos:cir-weight; + default "0"; + description "Specifies the weight of orphaned queues and scheduler that are within-cir"; + } + + } // container orphan-overrides + + list group { + key "group-name"; + description "Enter the group context"; + + leaf group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of this port scheduler policy group"; + } + + leaf monitor-threshold { + type uint32 { + range "0..100"; + } + default "0"; + description + "Specifies the threshold level that should be monitored. + It is percentage of the max-rate or max-rate-percent"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:queue-cir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Administrative CIR percent"; + } + + } // container percent-rate + + } + } + } // list group + + list level { + key "level-id"; + description "Enter the level context"; + + leaf level-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..8"; + } + } + description "Priority level this port scheduler policy"; + } + + leaf group { + type types-sros:named-item; + description "Associated group"; + } + + leaf weight { + type types-qos:weight { + range "1..100"; + } + default "1"; + description "Specifies the weight associated with the group"; + } + + leaf monitor-threshold { + type uint32 { + range "0..100"; + } + default "0"; + description + "Specifies the threshold level that should be monitored. + It is percentage of the max-rate or max-rate-percent"; + } + + choice rate-or-percent-rate { + default "rate"; + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-qos:queue-pir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative PIR"; + } + + leaf cir { + type types-qos:queue-cir-rate-maximum; + units "kilobps"; + default "max"; + description "Administrative CIR"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + default "100.00"; + description "Administrative CIR percent"; + } + + } // container percent-rate + + } + } + } // list level + + } // list port-scheduler-policy + + list hs-scheduler-policy { + key "name"; + max-elements 127; + description "Enter the hs-scheduler-policy context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "HS scheduler policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf max-rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + default "max"; + description "Maximum rate for this HS scheduler policy"; + } + + list group { + key "group-id"; + description "Enter the group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1"; + } + } + description "Group ID for the HS scheduler policy"; + } + + leaf rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "megabps"; + default "max"; + description "Group maximum rate"; + } + + } // list group + + list scheduling-class { + key "class-id"; + description "Enter the scheduling-class context"; + + leaf class-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..6"; + } + } + description "Class identifier for the HS scheduler policy scheduling class"; + } + + choice rate-or-group { + default "rate"; + case rate { + + leaf rate { + type union { + type uint32 { + range "1..100000"; + } + type enumeration { + enum "max" { value -1; } + } + } + default "max"; + description "Group maximum rate"; + } + + } + case group { + + container group { + presence "Specifies the group and weight configuration."; + description "Enter the group context"; + + leaf group-id { + type int32 { + range "1"; + } + mandatory true; + description "Associated group associated with this scheduling class"; + } + + leaf weight { + type int32 { + range "1..127"; + } + default "1"; + description "Weight associated with this scheduling class"; + } + + } // container group + + } + } + } // list scheduling-class + + } // list hs-scheduler-policy + + list hs-pool-policy { + key "name"; + max-elements 63; + description "Enter the hs-pool-policy context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "HS pool policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf system-reserve { + type decimal64 { + range "1.00..30.00"; + fraction-digits 2; + } + default "5.00"; + description "Percentage of HS buffers reserved for internal system use"; + } + + container root-tier { + description "Enter the root-tier context"; + + list root-pool { + key "root-pool-id"; + description "Enter the root-pool context"; + + leaf root-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..16"; + } + } + description "Root pool identifier for the HS pool policy"; + } + + leaf allocation-weight { + type uint32 { + range "0..100"; + } + default "0"; + description + "Specifies the weight that will be applied to the + first root pool and is divided by the sum of all root pool + weights to derive the pool's buffer allocation factor."; + } + + leaf slope-policy { + type types-sros:named-item; + description "Specifies the slope policy associated with this pool policy."; + } + + } // list root-pool + + } // container root-tier + + container mid-tier { + description "Enter the mid-tier context"; + + list mid-pool { + key "mid-pool-id"; + description "Enter the mid-pool context"; + + leaf mid-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..16"; + } + } + description "Mid-pool identifier for the HS pool policy"; + } + + leaf allocation-percent { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + default "1.00"; + description + "Specifies the percentage of the root-pool with which it is associated, + as specified by root-parent will be available to this mid-pool."; + } + + leaf slope-policy { + type types-sros:named-item; + description "Specifies the slope policy associated with this pool policy."; + } + + leaf port-bw-oversubscription-factor { + type uint32 { + range "1..10"; + } + default "1"; + description "Specifies the factor by which port bandwidth can be over subscribed."; + } + + container parent-root-pool { + description "Enter the parent-root-pool context"; + + choice map-pool { + default "pool-id"; + case pool-id { + + leaf pool-id { + type uint32 { + range "1..16"; + } + description "Specifies the parent root to which this mid-pool is associated."; + } + + } + case none { + + leaf none { + type empty; + description "Specifies none mid-pool is associated with this parent-pool."; + } + + } + } + } // container parent-root-pool + + } // list mid-pool + + } // container mid-tier + + } // list hs-pool-policy + + list hs-port-pool-policy { + key "name"; + max-elements 2047; + description "Enter the hs-port-pool-policy context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for HS port pool policy"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + container std-port-class-pools { + description "Enter the std-port-class-pools context"; + + list class-pool { + key "std-class-pool-id"; + description "Enter the class-pool context"; + + leaf std-class-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..6"; + } + } + description "Standard port class identifier for the HS port pool policy"; + } + + leaf slope-policy { + type types-sros:named-item; + description "Specifies the slope policy associated with this pool policy."; + } + + container parent-mid-pool { + description "Enter the parent-mid-pool context"; + + choice map-pool { + default "pool-id"; + case pool-id { + + leaf pool-id { + type uint32 { + range "1..16"; + } + description "Specifies the mid-pool parent."; + } + + } + case none { + + leaf none { + type empty; + description "Specifies none mid-pool is associated with this parent-pool."; + } + + } + } + } // container parent-mid-pool + + container allocation { + description "Enter the allocation context"; + + choice port-weight-or-percent { + default "port-bw-weight"; + case port-bw-weight { + + leaf port-bw-weight { + type uint32 { + range "1..100"; + } + default "1"; + description "Specifies the port share weight."; + } + + } + case explicit-percent { + + leaf explicit-percent { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Specifies the percentage of parent pool to be allocated."; + } + + } + } + } // container allocation + + } // list class-pool + + } // container std-port-class-pools + + container alt-port-class-pools { + description "Enter the alt-port-class-pools context"; + + list class-pool { + key "alt-class-pool-id"; + description "Enter the class-pool context"; + + leaf alt-class-pool-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..6"; + } + } + description "The alt-port-class-pool identifier for the HS port pool policy."; + } + + leaf slope-policy { + type types-sros:named-item; + description "Specifies the slope policy associated with this pool policy."; + } + + container parent-mid-pool { + description "Enter the parent-mid-pool context"; + + choice map-pool { + default "none"; + case pool-id { + + leaf pool-id { + type uint32 { + range "1..16"; + } + description "Specifies the mid-pool parent."; + } + + } + case none { + + leaf none { + type empty; + description "Specifies none mid-pool is associated with this parent-pool."; + } + + } + } + } // container parent-mid-pool + + container allocation { + description "Enter the allocation context"; + + choice port-weight-or-percent { + default "port-bw-weight"; + case port-bw-weight { + + leaf port-bw-weight { + type uint32 { + range "1..100"; + } + default "1"; + description "Specifies the port share weight."; + } + + } + case explicit-percent { + + leaf explicit-percent { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Specifies the percentage of parent pool to be allocated."; + } + + } + } + } // container allocation + + } // list class-pool + + } // container alt-port-class-pools + + } // list hs-port-pool-policy + + list hs-attachment-policy { + key "name"; + max-elements 31; + description "Enter the hs-attachment-policy context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "HS attachment policy name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf low-burst-max-class { + type uint32 { + range "1..6"; + } + default "6"; + description "Low priority burst threshold"; + } + + list wrr-group { + key "wrr-group-id"; + description "Enter the wrr-group context"; + + leaf wrr-group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..2"; + } + } + description "WRR group ID for the HS attachment policy"; + } + + choice wrr-group-mapping { + default "unattached"; + case sched-class-id { + + leaf sched-class { + type int32 { + range "1..6"; + } + description "Specifies scheduling class associated with this WRR group."; + } + + } + case unattached { + + leaf unattached { + type empty; + description + "Specifies the mapping type associated with this WRR group is + unattached."; + } + + } + } + } // list wrr-group + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..8"; + } + } + description "Queue identifier for the HS attachment policy"; + } + + choice hs-attach-queue-mapping { + default "unattached"; + case sched-class-id { + + leaf sched-class { + type int32 { + range "1..6"; + } + description "Specifies scheduling class associated with this queue."; + } + + } + case wrr-group-id { + + leaf wrr-group { + type int32 { + range "1..2"; + } + description "Specifies wrr group associated with this queue."; + } + + } + case unattached { + + leaf unattached { + type empty; + description + "Specifies the mapping type associated with this WRR group is + unattached."; + } + + } + } + } // list queue + + } // list hs-attachment-policy + + list post-policer-mapping { + key "name"; + max-elements 7; + description "Enter the post-policer-mapping context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of post policer mapping policy."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + list fc { + key "fc-name profile"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Name of forwarding class to be remapped"; + } + + leaf profile { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-profile; + } + description "Packet Profile that needs to be remapped."; + } + + container maps-to { + description "Enter the maps-to context"; + + leaf fc { + type types-sros:fc-name; + description "Name of forwarding class to be remapped"; + } + + leaf profile { + type types-qos:egress-profile; + description "Packet Profile that needs to be remapped."; + } + + } // container maps-to + + } // list fc + + } // list post-policer-mapping + + list queue-group-redirect-list { + key "name"; + max-elements 2047; + description "Enter the queue-group-redirect-list context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of queue-group redirect list."; + } + + leaf type { + type enumeration { + enum "vxlan-vni" { value 1; } + } + default "vxlan-vni"; + description "Type for queue-group redirect list"; + } + + list match { + key "field-value"; + max-elements 16; + description "Enter the match context"; + + leaf field-value { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..16777215"; + } + } + description + "Specifies the value of the field in the ingress or egress + packet which, when matched, will redirect the packet to the + queue-group instance"; + } + + leaf instance { + type uint32 { + range "1..65535"; + } + mandatory true; + description "Specifies the queue-group instance to which packet will be forwarded."; + } + + } // list match + + } // list queue-group-redirect-list + + list egress-remark-policy { + key "egress-remark-policy-name"; + description "Egress-remark QoS policies."; + + leaf egress-remark-policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:qos-policy-name; + } + description "The name of this egress-remark-policy QoS policy."; + } + + leaf description { + type types-sros:description; + description "The description of this egress-remark QoS policy."; + } + + leaf scope { + type types-qos:item-scope; + default "template"; + description "Scope of the policy."; + } + + list fc { + key "fc-name"; + description "Egress Remark Policy Forwarding Class (FC) Mappings."; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Specifies the forwarding class."; + } + + container de-mark { + presence "Specifies whether to set DE of the frames."; + description "Configure DE Value for Marking."; + + leaf force { + type types-qos:de-value; + description "Specifies the DE value to set."; + } + + } // container de-mark + + container dot1p { + description "Specifies Dot1p Markings."; + + leaf in-profile { + type types-qos:dot1p-priority; + description "Specifies Dot1p value for in-profile frames."; + } + + leaf out-profile { + type types-qos:dot1p-priority; + description "Specifies Dot1p value for out-of-profile frames."; + } + + } // container dot1p + + container dscp { + description "Configures DSCP Markings."; + + leaf in-profile { + type types-qos:dscp-name; + description "Specifies DSCP name for in-profile frames."; + } + + leaf out-profile { + type types-qos:dscp-name; + description "Specifies DSCP value for out-of-profile frames."; + } + + } // container dscp + + container lsp-exp { + description "Specifies details of LSP-EXP."; + + leaf in-profile { + type types-qos:lsp-exp-value; + description "Specifies LSP-EXP marking for in-profile frames."; + } + + leaf out-profile { + type types-qos:lsp-exp-value; + description "Specifies LSP-EXP value for out-of-profile frames."; + } + + } // container lsp-exp + + } // list fc + + } // list egress-remark-policy + + container match-list { + description "Enter the match-list context"; + + list ip-prefix-list { + key "prefix-list-name"; + max-elements 512; + description "Enter the ip-prefix-list context"; + + leaf prefix-list-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Specifies the name given to this prefix list."; + } + + leaf description { + type types-sros:description; + description "The description of ip-prefix-list."; + } + + list prefix { + key "ip-prefix"; + max-elements 256; + description "Enter the prefix context"; + + leaf ip-prefix { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-prefix; + } + description "Specifies the IPv4 prefix for this prefix list."; + } + + } // list prefix + + } // list ip-prefix-list + + list ipv6-prefix-list { + key "prefix-list-name"; + max-elements 128; + description "Enter the ipv6-prefix-list context"; + + leaf prefix-list-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Specifies the name given to this prefix list."; + } + + leaf description { + type types-sros:description; + description "The description of ipv6-prefix-list."; + } + + list prefix { + key "ipv6-prefix"; + max-elements 128; + description "Enter the prefix context"; + + leaf ipv6-prefix { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-prefix; + } + description "Specifies the IPv6 prefix for this prefix list."; + } + + } // list prefix + + } // list ipv6-prefix-list + + } // container match-list + + } // container qos + + list router { + key "router-name"; + max-elements 3; + description "Enter the router context"; + + leaf router-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64 { + pattern ".{1,32}" { + error-message "vRtrName needs to be extended to 64 to support this name"; + } + } + } + description + "The administrative name for this virtual router. + + The router name must be unique among all virtual routers in the system."; + } + + container aggregates { + description "Enter the aggregates context"; + + list aggregate { + key "ip-prefix"; + description "Enter the aggregate context"; + + leaf ip-prefix { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-prefix; + } + description "IP address prefix to match for aggregation"; + } + + leaf as-set { + type boolean; + default "false"; + description "Allow aggregate route as an AS-SET option"; + } + + leaf-list community { + type types-sros:community; + max-elements 12; + ordered-by user; + description "Community name that is added to aggregate route"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf summary-only { + type boolean; + default "false"; + description "Advertise only the aggregate route and not the specific routes that make up the aggregate"; + } + + leaf local-preference { + type int64 { + range "0..4294967295"; + } + description "Default local preference if aggregate route is exported and advertised to BGP peers"; + } + + choice next-hop { + case blackhole { + + container blackhole { + presence "blackhole"; + description "Enter the blackhole context"; + + leaf generate-icmp { + type boolean; + default "false"; + description "Send ICMP unreachable messages when packets match an aggregate route with black-hole next-hop"; + } + + } // container blackhole + + } + case indirect { + + leaf indirect { + type types-sros:ip-unicast-address; + sros-ext:immutable; + description "Address of indirect next hop"; + } + + } + } + container aggregator { + description "Enter the aggregator context"; + + leaf as-number { + type uint32 { + range "1..max"; + } + description "Aggregator Autonomous System Number (ASN)"; + } + + leaf address { + type types-sros:ipv4-unicast-address; + description "Aggregator IP address"; + } + + } // container aggregator + + } // list aggregate + + } // container aggregates + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Router interface name"; + } + + container qos { + description "Enter the qos context"; + + leaf network-policy { + type types-qos:network-policy-name; + description "Pre-existing network policy ID associated with a network interface"; + } + + leaf egress-port-redirect-group { + type types-sros:named-item; + description "QoS queue group name"; + } + + leaf egress-instance { + type types-services:qos-qgrp-instance-id; + description "Instance of the port egress queue group for this interface"; + } + + leaf ingress-fp-redirect-group { + type types-sros:named-item; + description "Forwarding-plane queue group policy for this interface"; + } + + leaf ingress-instance { + type types-services:qos-qgrp-instance-id; + description "Instance of the forwarding-plane ingress queue group for this interface"; + } + + } // container qos + + } // list interface + + container tunnel-interface { + description "Enter the tunnel-interface context"; + + } // container tunnel-interface + + container bgp { + presence "Enables bgp functionality on this router"; + description "Enter the bgp context"; + + list group { + key "group-name"; + description "Enter the group context"; + + leaf group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "BGP peer group"; + } + + list prefix-limit { + key "family"; + description "Enter the prefix-limit context"; + + leaf family { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-bgp:ip-family-identifier; + } + description "Address family to which the limit applies"; + } + + leaf maximum { + type uint32 { + range "1..4294967295"; + } + mandatory true; + description "Specifies the maximum number of routes that can be learned from this peer."; + } + + leaf log-only { + type boolean; + default "false"; + description "Send warning message if specified threshold or limit is reached, without disabling BGP peer session"; + } + + leaf threshold { + type uint32 { + range "1..100"; + } + default "90"; + description "Threshold value that triggers a warning message"; + } + + leaf idle-timeout { + type int32 { + range "1..1024"; + } + description "Time that BGP peering remains idle before reconnecting to peers"; + } + + leaf post-import { + type boolean; + default "false"; + description "Apply prefix limit only to number of routes accepted by import policies"; + } + + } // list prefix-limit + + } // list group + + list neighbor { + key "ip-address"; + description "Enter the neighbor context"; + + leaf ip-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-address-with-zone; + } + description "BGP group neighbor"; + } + + list prefix-limit { + key "family"; + description "Enter the prefix-limit context"; + + leaf family { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-bgp:ip-family-identifier; + } + description "Address family to which the limit applies"; + } + + leaf maximum { + type uint32 { + range "1..4294967295"; + } + mandatory true; + description "Specifies the maximum number of routes that can be learned from this peer."; + } + + leaf log-only { + type boolean; + default "false"; + description "Send warning message if specified threshold or limit is reached, without disabling BGP peer session"; + } + + leaf threshold { + type uint32 { + range "1..100"; + } + default "90"; + description "Threshold value that triggers a warning message"; + } + + leaf idle-timeout { + type int32 { + range "1..1024"; + } + description "Time that BGP peering remains idle before reconnecting to peers"; + } + + leaf post-import { + type boolean; + default "false"; + description "Apply prefix limit only to number of routes accepted by import policies"; + } + + } // list prefix-limit + + } // list neighbor + + } // container bgp + + list isis { + key "isis-instance"; + description "Enter the isis context"; + + leaf isis-instance { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "0..31"; + } + } + description "Instance ID for IS-IS instance"; + } + + leaf authentication-keychain { + type types-sros:named-item; + description "The keychain used to sign and/or authenticate."; + } + + leaf authentication-key { + type types-sros:encrypted-leaf { + length "1..366"; + } + description "Authentication key to verify PDUs sent by neighboring routers"; + } + + leaf authentication-type { + type types-isis:auth-type; + description "Authentication type"; + } + + leaf csnp-authentication { + type boolean; + default "true"; + description "Authenticate individual IS-IS protocol packets of complete sequence number PDU (CSNP) type"; + } + + leaf psnp-authentication { + type boolean; + default "true"; + description "Authenticate individual IS-IS protocol packets of partial sequence number PDU (PSNP) type"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of IS-IS instance"; + } + + leaf advertise-passive-only { + type boolean; + default "false"; + description "Advertise only prefixes that belong to passive interfaces"; + } + + leaf advertise-router-capability { + type enumeration { + enum "area" { value 2; } + enum "as" { value 3; } + } + description "Advertise router capabilities to neighbors for information and troubleshooting purposes"; + } + + leaf advertise-tunnel-link { + type boolean; + default "false"; + description "Allow use of forwarding adjacency"; + } + + leaf all-l1isis { + type yang:mac-address; + default "01:80:C2:00:00:14"; + description "Destination MAC address for all L1 ISIS neighbors on the link for this ISIS instance"; + } + + leaf all-l2isis { + type yang:mac-address; + default "01:80:C2:00:00:15"; + description "Destination MAC address for all L1 ISIS routers"; + } + + leaf authentication-check { + type boolean; + default "true"; + description "Perform authentication check to reject PDUs that do not match the type or key requirements"; + } + + leaf default-route-tag { + type uint32 { + range "1..max"; + } + description "Route tag for default route"; + } + + leaf ldp-sync { + type boolean; + default "true"; + description "Use IGP-LDP synchronization feature on all interfaces participating in IS-IS routing protocol"; + } + + leaf hello-authentication { + type boolean; + default "true"; + description "Authenticate individual IS-IS protocol packets of Hello type"; + } + + leaf ignore-attached-bit { + type boolean; + default "false"; + description "Ignore attached bit on received L1 LSPs to disable installation of default routes"; + } + + leaf ignore-lsp-errors { + type boolean; + default "false"; + description "Ignore LSP packets with errors"; + } + + leaf ignore-narrow-metric { + type boolean; + default "false"; + description "Ignore links with narrow metrics when wide-metrics support is enabled"; + } + + leaf iid-tlv { + type boolean; + default "false"; + description "Use IID TLVs with IS-IS multi-instance (MI)"; + } + + leaf ipv4-multicast-routing { + type types-isis:routing-topology; + default "native"; + description "IS-IS topology for IPv4 multicast routing"; + } + + leaf ipv4-routing { + type boolean; + default "true"; + description "Support IPv4 routing for IS-IS instance"; + } + + leaf ipv6-multicast-routing { + type types-isis:routing-topology; + default "false"; + description "Topology to populate the IPv6 multicast RTM"; + } + + leaf ipv6-routing { + type types-isis:routing-topology; + default "false"; + description "Routing topology for IPv6"; + } + + leaf hello-padding { + type types-isis:hello-padding-type; + description "Padding on IS-IS Hello packets"; + } + + leaf ldp-over-rsvp { + type boolean; + default "false"; + description "Allow LDP over RSVP processing"; + } + + leaf level-capability { + type types-isis:level; + description "Routing level for instance"; + } + + leaf lsp-lifetime { + type uint32 { + range "350..65535"; + } + units "seconds"; + sros-ext:manual-restart-to-modify; + default "1200"; + description "Amount of time during which an LSP is considered valid"; + } + + leaf lsp-mtu-size { + type types-isis:lsp-buffer-size; + units "bytes"; + sros-ext:manual-restart-to-modify; + default "1492"; + description "LSP MTU size"; + } + + leaf overload-export-interlevel { + type boolean; + default "false"; + description "Advertise the inter-level routes when router is overloaded"; + } + + leaf overload-export-external { + type boolean; + default "false"; + description "Advertise the external routes when router is in overloaded"; + } + + leaf poi-tlv { + type boolean; + default "false"; + description "Purge Originator Identification TLV"; + } + + leaf prefix-attributes-tlv { + type boolean; + default "false"; + description "Use IS-IS Prefix Attributes TLV to exchange extended IPv4 and IPv6 reachability information"; + } + + leaf reference-bandwidth { + type types-sros:reference-bandwidth-ext; + units "kilobps"; + description "Reference bandwidth for bandwidth relative costing"; + } + + leaf router-id { + type types-igp:router-id; + description "Unique router ID for ISIS instance"; + } + + leaf standard-multi-instance { + type boolean; + default "false"; + description "Enable RFC standards compliant multi-instance behavior"; + } + + leaf strict-adjacency-check { + type boolean; + default "false"; + description "Enable strict checking of address families for IS-IS adjacencies"; + } + + leaf suppress-attached-bit { + type boolean; + default "false"; + description "Allow IS-IS to suppress setting the attached bit on LSPs"; + } + + leaf system-id { + type types-igp:system-id; + sros-ext:manual-restart-to-modify; + description "System ID"; + } + + leaf traffic-engineering { + type boolean; + default "false"; + description "Traffic engineering for router"; + } + + leaf-list export-policy { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description + "Configure names of export policies to be used for determining which routes are exported + from the routing table to this IGP."; + } + + leaf-list import-policy { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description + "Configure names of import policies to be used for determining which routes are imported + from this IGP to the routing table."; + } + + leaf-list area-address { + type types-isis:area-address; + max-elements 3; + description "Area address portion of NSAP address"; + } + + container export-limit { + presence "Maximum number of routes (prefixes) that can be exported into IS-IS from the route table."; + description "Enter the export-limit context"; + + leaf number { + type uint32 { + range "1..max"; + } + mandatory true; + description "Maximum number of routes or prefixes to be exported into IGP instance from route table"; + } + + leaf log-percent { + type uint32 { + range "1..100"; + } + description "Export limit at which warning a log message and SNMP notification are sent"; + } + + } // container export-limit + + container graceful-restart { + presence "Enables/disables graceful restart for ISIS."; + description "Enter the graceful-restart context"; + + leaf helper-mode { + type boolean; + default "true"; + description "Enable graceful restart helper for IS-IS"; + } + + } // container graceful-restart + + container entropy-label { + description "Enter the entropy-label context"; + + leaf override-tunnel-elc { + type boolean; + default "false"; + description "Received entropy label capability advertisement to override"; + } + + } // container entropy-label + + container multi-topology { + presence "Configure multi-topologies support in this ISIS instance."; + description "Enter the multi-topology context"; + + leaf ipv6-unicast { + type boolean; + default "false"; + description "Support multi-topology TLVs"; + } + + leaf ipv4-multicast { + type boolean; + default "false"; + description "Support IPv4 topology (MT3)"; + } + + leaf ipv6-multicast { + type boolean; + default "false"; + description "Support IPv6 topology (MT4)"; + } + + } // container multi-topology + + container multicast-import { + description "Enter the multicast-import context"; + + leaf ipv4 { + type boolean; + default "false"; + description "Submit IPv4 routes into the multicast RPF of the RTM"; + } + + leaf ipv6 { + type boolean; + default "false"; + description "Submit IPv6 routes into the multicast RPF of the RTM"; + } + + } // container multicast-import + + container overload { + presence "Configure the local router so that it appears to be overload."; + description "Enter the overload context"; + + leaf max-metric { + type boolean; + default "false"; + description "Advertise transit links with maximum metric instead of setting overload bit"; + } + + } // container overload + + container overload-on-boot { + presence "Configure the local router so that it appears to be overloaded at boot up."; + description "Enter the overload-on-boot context"; + + leaf timeout { + type uint32 { + range "60..1800"; + } + units "seconds"; + description "Time during which the router operates in overload state after reboot"; + } + + leaf max-metric { + type boolean; + default "false"; + description "Advertise transit links with maximum metric instead of setting overload bit"; + } + + } // container overload-on-boot + + container prefix-limit { + presence "Configure the limit for maximum number of prefixes IS-IS can support."; + description "Enter the prefix-limit context"; + + leaf limit { + type uint32 { + range "1..max"; + } + mandatory true; + description "Maximum number of prefixes for IS-IS instance"; + } + + leaf log-only { + type boolean; + default "false"; + description "Send warning message at specified threshold or when limit is reached, without going into overload"; + } + + leaf warning-threshold { + type uint32 { + range "0..100"; + } + units "percent"; + default "0"; + description + "Specifies the percentage of the value defined by prefix-limit, at which a warning log message + and SNMP notification would be sent. + + This would only be a warning and additional prefixes will be learned up to 100% of prefix-limit. + + A value of 0 indicates that the threshold is disabled and no log message or SNMP notification will be sent."; + } + + leaf overload-timeout { + type types-igp:overload-timeout; + default "forever"; + description "Time router remains in overload after prefix limit is exceeded before restarting"; + } + + } // container prefix-limit + + container lsp-refresh { + description "Enter the lsp-refresh context"; + + leaf interval { + type uint32 { + range "150..65535"; + } + units "seconds"; + default "600"; + description "Refresh timer interval"; + } + + leaf half-lifetime { + type boolean; + default "true"; + description "Set the refresh interval to always be half the LSP lifetime"; + } + + } // container lsp-refresh + + container rib-priority { + description "Enter the rib-priority context"; + + container high { + description "Enter the high context"; + + choice type { + case prefix-list { + + leaf prefix-list { + type types-sros:named-item; + description "List used to select routes processed at higher priority through OSPF route calculation process"; + } + + } + case tag { + + leaf tag { + type uint32 { + range "1..max"; + } + description "Value that matches IS-IS routes processed at higher priority through route calculation process"; + } + + } + } + } // container high + + } // container rib-priority + + container timers { + description "Enter the timers context"; + + container spf-wait { + description "Enter the spf-wait context"; + + leaf spf-max-wait { + type uint32 { + range "10..120000"; + } + units "milliseconds"; + default "10000"; + description "Maximum interval between two consecutive SPF calculations"; + } + + leaf spf-initial-wait { + type uint32 { + range "10..100000"; + } + units "milliseconds"; + default "1000"; + description "Initial SPF calculation delay after topology change"; + } + + leaf spf-second-wait { + type uint32 { + range "10..100000"; + } + units "milliseconds"; + default "1000"; + description "Hold time between first and second SPF calculations"; + } + + } // container spf-wait + + container lsp-wait { + description "Enter the lsp-wait context"; + + leaf lsp-max-wait { + type uint32 { + range "10..120000"; + } + units "milliseconds"; + default "5000"; + description "Maximum time between two consecutive occurrences of LSP generation"; + } + + leaf lsp-initial-wait { + type uint32 { + range "10..100000"; + } + units "milliseconds"; + default "10"; + description "Initial LSP generation delay"; + } + + leaf lsp-second-wait { + type uint32 { + range "10..100000"; + } + units "milliseconds"; + default "1000"; + description "Delay between first and second LSP generation"; + } + + } // container lsp-wait + + } // container timers + + container unicast-import { + description "Enter the unicast-import context"; + + leaf ipv4 { + type boolean; + default "true"; + description "Submit IPv4 routes into unicast RTM"; + } + + leaf ipv6 { + type boolean; + default "true"; + description "Submit IPv6 routes into unicast RTM"; + } + + } // container unicast-import + + container loopfree-alternate { + presence "Enable/disable fast re-route capability for ISIS"; + description "Enter the loopfree-alternate context"; + + container exclude { + description "Enter the exclude context"; + + leaf-list prefix-policy { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description + "Loopfree Alternative (LFA) exclude policies from which prefixes are excluded. + Prefixes excluded from LFA this way will not be used in the LFA calculation, regardless of their priority."; + } + + } // container exclude + + container remote-lfa { + presence "Enable/disable Remote LFA"; + description "Enter the remote-lfa context"; + + leaf max-pq-cost { + type uint32; + default "4261412864"; + description "Maximum cost of destination node during reverse SPF calculation"; + } + + container node-protect { + presence "Configure node-protection support in this ISIS instance."; + description "Enter the node-protect context"; + + leaf max-pq-nodes { + type uint32 { + range "1..32"; + } + default "16"; + description "Specifies the maximum number of PQ nodes."; + } + + } // container node-protect + + } // container remote-lfa + + container ti-lfa { + presence "Enable/disable topology Independent LFA"; + description "Enter the ti-lfa context"; + + leaf max-sr-frr-labels { + type uint32 { + range "0..3"; + } + default "2"; + description "Maximum number of labels that TI-LFA backup next hop can use"; + } + + container node-protect { + presence "Configure node-protection support in this ISIS instance."; + description "Enter the node-protect context"; + + } // container node-protect + + } // container ti-lfa + + } // container loopfree-alternate + + container database-export { + presence "Enable/disable database export."; + description "Enter the database-export context"; + + leaf igp-identifier { + type uint64; + description "Unique identifier of the IGP instance in the BGP-LS NLRI"; + } + + container bgp-ls-identifier { + presence "Enable/disable BGP-LS instance-identifier."; + description "Enter the bgp-ls-identifier context"; + + leaf value { + type uint32; + default "0"; + description "BGP-LS identifier that is sent in the BGP-LS NLRI"; + } + + } // container bgp-ls-identifier + + } // container database-export + + container segment-routing { + description "Enter the segment-routing context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of segment routing"; + } + + leaf adj-sid-hold { + type types-igp:adj-sid-hold-type; + units "seconds"; + default "15"; + description "Adjacency SID hold time"; + } + + leaf entropy-label { + type boolean; + default "true"; + description "Entropy label capability"; + } + + leaf export-tunnel-table { + type enumeration { + enum "ldp" { value 1; } + } + description "Tunnel table export policies to export tunneled routes"; + } + + leaf srlb { + type types-sros:named-item-64; + description "Routing local block"; + } + + leaf tunnel-mtu { + type uint32 { + range "512..9198"; + } + description "Tunnel MTU size"; + } + + leaf tunnel-table-pref { + type uint32 { + range "1..255"; + } + default "11"; + description "Preference of SR tunnels created by the IGP instance"; + } + + container prefix-sid-range { + presence "Configure prefix-sid-range"; + description "Enter the prefix-sid-range context"; + + choice type { + case global { + + leaf global { + type empty; + description "Use global SR range"; + } + + } + case local { + + leaf start-label { + type uint32 { + range "0..524287"; + } + default "0"; + description "Value for the local label starting offset"; + } + + leaf max-index { + type uint32 { + range "1..524287"; + } + default "1"; + description "Maximum local SID index"; + } + + } + } + } // container prefix-sid-range + + list adjacency-set { + key "id"; + description "Enter the adjacency-set context"; + + leaf id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..max"; + } + } + description "Identifier for specified adjacency set"; + } + + leaf family { + type types-sros:adjacency-set-family-type; + default "ipv4"; + description "Address family for the adjacency set"; + } + + leaf parallel { + type boolean; + default "true"; + description "Require all members of the adjacency set to terminate on the same neighboring node"; + } + + leaf advertise { + type boolean; + default "true"; + description "Advertise the adjacency set when all links terminate on the same neighboring node"; + } + + container sid { + presence "Assign a static SID value to this adj-set"; + description "Enter the sid context"; + + choice type { + case label { + + leaf label { + type int64 { + range "1..1048575"; + } + description "Adjacency SID"; + } + + } + } + } // container sid + + } // list adjacency-set + + container mapping-server { + description "Enter the mapping-server context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ISIS segment routing mapping server"; + } + + list node-sid-map { + key "sid-index"; + description "Enter the node-sid-map context"; + + leaf sid-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32; + } + description "SID index of a mapping server Prefix-SID"; + } + + leaf ip-prefix { + type types-sros:ipv4-unicast-prefix; + mandatory true; + description "Prefix of a mapping server Prefix-SID"; + } + + leaf range { + type uint32 { + range "0..65535"; + } + default "1"; + description "Range of addresses and their associated prefix SIDs"; + } + + leaf level-capability { + type types-isis:level; + description "Flags to assign in SID Label Binding TLV advertised by Segment Routing Mapping Server"; + } + + leaf clear-n-flag { + type boolean; + default "false"; + description "Clear the node-sid flag (N-flag)"; + } + + container set-flags { + description "Enter the set-flags context"; + + leaf bit-s { + type boolean; + default "false"; + description "SID Label Binding TLV to be flooded across the entire routing domain"; + } + + } // container set-flags + + } // list node-sid-map + + } // container mapping-server + + } // container segment-routing + + container igp-shortcut { + description "Enter the igp-shortcut context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of RSVP-TE or SR-TE shortcut"; + } + + container tunnel-next-hop { + description "Enter the tunnel-next-hop context"; + + list family { + key "family-type"; + description "Enter the family context"; + + leaf family-type { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-igp:tunn-next-hop-family-type; + } + description "Address family type for tunnel next-hop"; + } + + leaf resolution { + type types-sros:resolution-type; + description "Resolution state for IGP shortcut tunnels"; + } + + container resolution-filter { + description "Enter the resolution-filter context"; + + leaf rsvp { + type boolean; + default "false"; + description "Use RSVP tunneling for next-hop resolution"; + } + + leaf sr-te { + type boolean; + default "false"; + description "Use SR-TE tunneling for next-hop resolution"; + } + + } // container resolution-filter + + } // list family + + } // container tunnel-next-hop + + } // container igp-shortcut + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Router interface name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of interface"; + } + + leaf hello-authentication-key { + type types-sros:encrypted-leaf { + length "1..366"; + } + description "Authentication key or hash string for Hello PDUs"; + } + + leaf hello-authentication-keychain { + type types-sros:named-item; + description "Authentication keychain to use for the session."; + } + + leaf hello-authentication-type { + type types-isis:auth-type; + description "Hello authentication type"; + } + + leaf hello-padding { + type types-isis:hello-padding-type; + description "Padding on IS-IS Hello packets"; + } + + leaf passive { + type boolean; + default "false"; + description "Passive interface"; + } + + leaf csnp-interval { + type uint32 { + range "1..65535"; + } + units "seconds"; + default "10"; + description "Time interval between successive CSN PDUs sent from interface"; + } + + leaf default-instance { + type boolean; + default "false"; + description "Allow non-MI capable router to establish an adjacency and operate with a router in non-zero instance"; + } + + leaf hello-authentication { + type boolean; + default "true"; + description "Authenticate individual IS-IS protocol packets of Hello type"; + } + + leaf interface-type { + type types-isis:interface-type; + description "Interface type to broadcast, point-to-point, or to be default"; + } + + leaf ipv4-multicast { + type boolean; + default "true"; + description "Clear IPv4 multicast routing for interface"; + } + + leaf ipv6-multicast { + type boolean; + default "true"; + description "Clear IPv4 multicast routing for interface"; + } + + leaf ipv6-unicast { + type boolean; + default "true"; + description "Clear IPv4 multicast routing for interface"; + } + + leaf level-capability { + type types-isis:level; + description "IS-IS levels for this interface"; + } + + leaf load-balancing-weight { + type uint32; + description "Load balancing weight"; + } + + leaf lsp-pacing-interval { + type uint32 { + range "0..65535"; + } + default "100"; + description "Interval for sending LSPs from interface"; + } + + leaf retransmit-interval { + type uint32 { + range "1..65535"; + } + units "seconds"; + default "5"; + description "Minimum time between LSP PDU retransmissions on point-to-point interface"; + } + + leaf sid-protection { + type boolean; + default "true"; + description "Allow adjacency SID protection by LFA and remote LFA"; + } + + leaf tag { + type uint32 { + range "1..max"; + } + description "Route tag for IP address of interface"; + } + + container ipv4-adjacency-sid { + presence "Assign IPv4 static adjacency sid to interface"; + description "Enter the ipv4-adjacency-sid context"; + + choice type { + case label { + + leaf label { + type int64 { + range "1..1048575"; + } + description "Adjacency SID"; + } + + } + } + } // container ipv4-adjacency-sid + + container ipv6-adjacency-sid { + presence "Assign IPv6 static adjacency sid to interface"; + description "Enter the ipv6-adjacency-sid context"; + + choice type { + case label { + + leaf label { + type int64 { + range "1..1048575"; + } + description "Adjacency SID"; + } + + } + } + } // container ipv6-adjacency-sid + + container loopfree-alternate { + description "Enter the loopfree-alternate context"; + + leaf exclude { + type boolean; + default "false"; + description "Enable/disable Loopfree Alternative at interface level."; + } + + container policy-map { + presence "Configure a route-next-hop template"; + description "Enter the policy-map context"; + + leaf route-nh-template { + type types-sros:named-item; + mandatory true; + description "Route next hop policy template that is applied to interface"; + } + + } // container policy-map + + } // container loopfree-alternate + + container mesh-group { + presence "Configure mesh groups"; + description "Enter the mesh-group context"; + + choice type { + case value { + + leaf value { + type int32 { + range "1..2000000000"; + } + description "Mesh group for the interface"; + } + + } + case blocked { + + leaf blocked { + type empty; + description "Prevent the interface from flooding LSPs"; + } + + } + } + } // container mesh-group + + container bfd-liveness { + description "Enter the bfd-liveness context"; + + container ipv4 { + presence "Enable BFD for IPv4"; + description "Enter the ipv4 context"; + + leaf include-bfd-tlv { + type boolean; + default "false"; + description "BFD-enabled TLV for IPv4 to include on this IS-IS interface"; + } + + } // container ipv4 + + container ipv6 { + presence "Enable BFD for IPv6"; + description "Enter the ipv6 context"; + + leaf include-bfd-tlv { + type boolean; + default "false"; + description "BFD-enabled TLV for IPv4 to include on this IS-IS interface"; + } + + } // container ipv6 + + } // container bfd-liveness + + container ipv4-node-sid { + presence "Configure IPv4 node SID for this interface"; + description "Enter the ipv4-node-sid context"; + + leaf clear-n-flag { + type boolean; + default "false"; + description "Clear the node-sid flag (N-flag)"; + } + + choice type { + case label { + + leaf label { + type int64 { + range "1..4294967295"; + } + description "Specifies IPvX node SID label for this interface."; + } + + } + case index { + + leaf index { + type int64 { + range "0..4294967295"; + } + description "IPvX node SID index for this interface"; + } + + } + } + } // container ipv4-node-sid + + container ipv6-node-sid { + presence "Configure IPv6 node SID for this interface"; + description "Enter the ipv6-node-sid context"; + + leaf clear-n-flag { + type boolean; + default "false"; + description "Clear the node-sid flag (N-flag)"; + } + + choice type { + case label { + + leaf label { + type int64 { + range "1..4294967295"; + } + description "Specifies IPvX node SID label for this interface."; + } + + } + case index { + + leaf index { + type int64 { + range "0..4294967295"; + } + description "IPvX node SID index for this interface"; + } + + } + } + } // container ipv6-node-sid + + list adjacency-set { + key "id"; + description "Enter the adjacency-set context"; + + leaf id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..max"; + } + } + description "Adjacency set identity"; + } + + } // list adjacency-set + + list level { + key "level-number"; + max-elements 2; + description "Enter the level context"; + + leaf level-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type enumeration { + enum "1" { value 1; } + enum "2" { value 2; } + } + } + description "IS-IS protocol level to which these attributes apply"; + } + + leaf hello-authentication-key { + type types-sros:encrypted-leaf { + length "1..366"; + } + description "Authentication or hash key string."; + } + + leaf hello-authentication-keychain { + type types-sros:named-item; + description "Authentication keychain to use for the session."; + } + + leaf hello-authentication-type { + type types-isis:auth-type; + description "Hello-authentication-type to be enabled."; + } + + leaf hello-padding { + type types-isis:hello-padding-type; + description "Padding on IS-IS Hello packets"; + } + + leaf passive { + type boolean; + default "false"; + description "Passive interface"; + } + + leaf hello-interval { + type uint32 { + range "1..20000"; + } + default "9"; + description "Interval between Hello messages sent on this level"; + } + + leaf hello-multiplier { + type int32 { + range "2..100"; + } + default "3"; + description "Hello messages missed from neighbor before router declares adjacency down"; + } + + leaf ipv4-multicast-metric { + type types-isis:metric; + description "IS-IS interface metric applied for IPv4 multicast"; + } + + leaf ipv6-multicast-metric { + type types-isis:metric; + description "IS-IS interface metric applied for IPv6 multicast"; + } + + leaf ipv6-unicast-metric { + type types-isis:metric; + description "IS-IS interface metric applied for for IPv6 unicast"; + } + + leaf metric { + type types-isis:metric; + description "IS-IS interface metric applied for for IPv4 unicast"; + } + + leaf priority { + type uint32 { + range "0..127"; + } + default "64"; + description "Router to become the designated router on a multi-access network"; + } + + leaf sd-offset { + type types-isis:metric; + description "Value of the signal degrade offset"; + } + + leaf sf-offset { + type types-isis:metric; + description "Value of the signal fail offset"; + } + + } // list level + + } // list interface + + list level { + key "level-number"; + max-elements 2; + description "Enter the level context"; + + leaf level-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type enumeration { + enum "1" { value 1; } + enum "2" { value 2; } + } + } + description "IS-IS protocol level to which these attributes apply"; + } + + leaf authentication-keychain { + type types-sros:named-item; + description "The keychain used to sign and/or authenticate."; + } + + leaf authentication-key { + type types-sros:encrypted-leaf { + length "1..366"; + } + description "Authentication or hash key string."; + } + + leaf authentication-type { + type types-isis:auth-type; + description "Configure the authentication type to be used."; + } + + leaf csnp-authentication { + type boolean; + default "true"; + description "Enable/disable authentication on received ISIS protocol packets of type CSNP."; + } + + leaf psnp-authentication { + type boolean; + default "true"; + description "Enable/disable authentication on received ISIS protocol packets of type PSNP."; + } + + leaf advertise-router-capability { + type boolean; + default "true"; + description "Allow router advertisement capabilities"; + } + + leaf database-export-exclude { + type boolean; + default "false"; + description "Exclude IGP link-state information of a specific IS-IS level from being exported into extended TE-DB"; + } + + leaf default-ipv4-multicast-metric { + type types-isis:metric; + default "10"; + description "Default metric for IPv4 unicast"; + } + + leaf default-ipv6-multicast-metric { + type types-isis:metric; + default "10"; + description "Default metric for IPv6 unicast"; + } + + leaf default-ipv6-unicast-metric { + type types-isis:metric; + default "10"; + description "Default metric for IPv6 unicast"; + } + + leaf default-metric { + type types-isis:metric; + default "10"; + description "Default metric"; + } + + leaf external-preference { + type uint32 { + range "1..255"; + } + default "165"; + description "External route preference for IS-IS level"; + } + + leaf hello-authentication { + type boolean; + default "true"; + description "Authenticate individual IS-IS protocol packets of Hello type"; + } + + leaf hello-padding { + type types-isis:hello-padding-type; + description "Padding on IS-IS Hello packets"; + } + + leaf loopfree-alternate-exclude { + type boolean; + default "false"; + description "Exclude interface participating in specific IS-IS level in SPF LFA computation"; + } + + leaf lsp-mtu-size { + type types-isis:lsp-buffer-size; + units "bytes"; + sros-ext:manual-restart-to-modify; + default "1492"; + description "LSP MTU size"; + } + + leaf preference { + type uint32 { + range "1..255"; + } + default "18"; + description "External route preference at level"; + } + + leaf wide-metrics-only { + type boolean; + default "false"; + description "Use wide metrics advertisements in the LSPs"; + } + + container bier { + description "Enter the bier context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administratively enable/disable BIER."; + } + + leaf template { + type types-sros:named-item; + description "Specify BIER template name."; + } + + } // container bier + + } // list level + + list link-group { + key "link-group-name"; + description "Enter the link-group context"; + + leaf link-group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Link group name for the IS-IS protocol"; + } + + leaf description { + type types-sros:very-long-description; + description "Text description"; + } + + list level { + key "level-number"; + max-elements 2; + description "Enter the level context"; + + leaf level-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type enumeration { + enum "1" { value 1; } + enum "2" { value 2; } + } + } + description "IS-IS protocol level to which these attributes apply"; + } + + leaf ipv4-multicast-metric-offset { + type types-isis:metric; + description "Offset value for the IPv4 multicast address family"; + } + + leaf ipv4-unicast-metric-offset { + type types-isis:metric; + description "Offset value for the IPv4 unicast address family"; + } + + leaf ipv6-multicast-metric-offset { + type types-isis:metric; + description "Offset value for the IPv6 multicast address family"; + } + + leaf ipv6-unicast-metric-offset { + type types-isis:metric; + description "Offset value for the IPv6 unicast address family"; + } + + leaf oper-members { + type uint32 { + range "1..8"; + } + description "Minimum number of operational links"; + } + + leaf revert-members { + type uint32 { + range "1..8"; + } + description "Minimum number of operational links to return link group to normal state and remove offsets"; + } + + list member { + key "interface-name"; + max-elements 8; + description "Enter the member context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Router interface name for this link group"; + } + + } // list member + + } // list level + + } // list link-group + + list summary-address { + key "ip-prefix"; + description "Enter the summary-address context"; + + leaf ip-prefix { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-prefix; + } + description "Summary IP prefix"; + } + + leaf level-capability { + type types-isis:level; + description "IS-IS Level from which the prefix should be summarized"; + } + + leaf route-tag { + type uint32 { + range "1..max"; + } + description "Route tag assigned to the summary address"; + } + + } // list summary-address + + } // list isis + + container mpls { + presence "Enables mpls functionality on this router."; + description "Enter the mpls context"; + + leaf admin-group-frr { + type boolean; + default "false"; + description "Use admin group constraints for FRR path computation"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MPLS instance"; + } + + leaf bypass-resignal-timer { + type uint32 { + range "30..10080"; + } + units "minutes"; + description "Value for the LSP resignal timer"; + } + + leaf cspf-on-loose-hop { + type boolean; + default "false"; + description "Calculate CSPF until next loose hop on LSR"; + } + + leaf dynamic-bypass { + type boolean; + default "true"; + description "Create dynamic bypass LSPs in FRR"; + } + + leaf exponential-backoff-retry { + type boolean; + default "false"; + description "Use exponential back-off timer when retrying an LSP"; + } + + leaf frr-object { + type boolean; + default "true"; + description "Signal with fast reroute object"; + } + + leaf hold-timer { + type uint32 { + range "0..10"; + } + units "seconds"; + default "1"; + description "Hold timer value"; + } + + leaf least-fill-min-thd { + type types-sros:percent; + default "5"; + description "Percentage of the least fill minimum threshold value"; + } + + leaf least-fill-reoptim-thd { + type types-sros:percent; + default "10"; + description "Percentage of the least fill reoptimization threshold value"; + } + + leaf logger-event-bundling { + type boolean; + default "false"; + description "Merge and bundle MPLS traps"; + } + + leaf lsp-init-retry-timeout { + type uint32 { + range "10..600"; + } + units "seconds"; + default "30"; + description "LSP initial retry timeout"; + } + + leaf max-bypass-associations { + type uint32 { + range "100..131072"; + } + default "1000"; + description "Maximum number of LSPs to be associated with a bypass tunnel"; + } + + leaf mbb-prefer-current-hops { + type boolean; + default "false"; + description "Select preference to use the current hops for Make-Before-Break (MBB)"; + } + + leaf p2mp-resignal-timer { + type uint32 { + range "60..10080"; + } + units "minutes"; + description "Resignal timer for P2MP LSPs"; + } + + leaf p2mp-s2l-fast-retry { + type uint32 { + range "1..10"; + } + units "seconds"; + description "Fast retry timer for P2MP S2L paths"; + } + + leaf p2p-active-path-fast-retry { + type uint32 { + range "1..10"; + } + units "seconds"; + description "Fast retry timer for P2P active paths"; + } + + leaf resignal-timer { + type uint32 { + range "30..10080"; + } + units "minutes"; + description "Resignal timer for P2MP LSPs"; + } + + leaf retry-on-igp-overload { + type boolean; + default "false"; + description "Tear down LSPs when IGP is in overload state"; + } + + leaf secondary-fast-retry-timer { + type uint32 { + range "1..10"; + } + units "seconds"; + description "Fast retry timer for secondary paths"; + } + + leaf shortcut-local-ttl-propagate { + type boolean; + default "true"; + description "Propagate TTL over LSP shortcut for local packets"; + } + + leaf shortcut-transit-ttl-propagate { + type boolean; + default "true"; + description "Propagate TTL over LSP shortcut for local packets for transit packets"; + } + + leaf srlg-frr { + type enumeration { + enum "loose" { value 1; } + enum "strict" { value 2; } + } + description "Use of Shared Risk Link Group (SRLG) constraint for FRR path computation"; + } + + leaf static-lsp-fast-retry { + type uint32 { + range "1..30"; + } + units "seconds"; + default "30"; + description "Fast retry timer for static LSPs"; + } + + leaf user-srlg-db { + type boolean; + default "false"; + description "Enable/disable use of user SRLG database."; + } + + container auto-bandwidth-multipliers { + description "Enter the auto-bandwidth-multipliers context"; + + leaf sample-multiplier { + type uint32 { + range "1..511"; + } + default "1"; + description "Collection intervals in a sample interval"; + } + + leaf adjust-multiplier { + type uint32 { + range "1..16383"; + } + default "288"; + description "Collection intervals in a sample interval"; + } + + } // container auto-bandwidth-multipliers + + container entropy-label { + description "Enter the entropy-label context"; + + leaf rsvp-te { + type boolean; + default "true"; + description "Apply entropy labels to RSVP-TE LSPs"; + } + + leaf sr-te { + type boolean; + default "true"; + description "Apply entropy labels to SR-TE LSPs"; + } + + } // container entropy-label + + container pce-report { + description "Enter the pce-report context"; + + leaf sr-te { + type boolean; + default "false"; + description "Allow PCE reporting for all TE LSPs of SR-TE type"; + } + + leaf rsvp-te { + type boolean; + default "false"; + description "Allow PCE reporting for all TE LSPs of RSVP-TE type"; + } + + } // container pce-report + + container srlg-database { + description "Enter the srlg-database context"; + + list router-id { + key "router-address"; + description "Enter the router-id context"; + + leaf router-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-address; + } + description + "Specifies a unique identifier of the router + in the Autonomous System."; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the interface"; + } + + list interface { + key "interface-address srlg-group"; + description "Enter the interface context"; + + leaf interface-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-address; + } + description "Indicates the IP address of the interface."; + } + + leaf srlg-group { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "SRLG group name"; + } + + } // list interface + + } // list router-id + + } // container srlg-database + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Router interface name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of MPLS"; + } + + leaf te-metric { + type uint32 { + range "1..16777215"; + } + description "TE metric for the interface"; + } + + leaf-list admin-group { + type types-sros:named-item; + max-elements 32; + description "Name of the admin group membership of the MPLS interface"; + } + + list srlg-group { + key "name"; + max-elements 64; + description "Enter the srlg-group context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Shared Risk Link Group (SRLG) name"; + } + + } // list srlg-group + + list label-map { + key "in-label"; + description "Enter the label-map context"; + + leaf in-label { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:mpls-label; + } + description "Match the incoming MPLS label"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the label map"; + } + + choice label-map-choice { + case pop { + + leaf pop { + type empty; + sros-ext:immutable; + description "Pop (remove) the incoming label and forward packet based on service header"; + } + + } + case swap { + + container swap { + presence "The swap action on the incoming label."; + description "Enter the swap context"; + + leaf out-label { + type union { + type uint32 { + range "16..1048575"; + } + type enumeration { + enum "implicit-null-label" { value 3; } + } + } + mandatory true; + description "Push specific label onto the top of the outgoing packet's label stack"; + } + + leaf next-hop { + type types-sros:ipv4-unicast-address; + mandatory true; + description "IP address for the next hop"; + } + + } // container swap + + } + } + } // list label-map + + } // list interface + + list class-forwarding-policy { + key "policy-name"; + max-elements 15; + description "Enter the class-forwarding-policy context"; + + leaf policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of class forwarding policy"; + } + + leaf default-set { + type uint32 { + range "1..6"; + } + default "1"; + description "Default forwarding set ID"; + } + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name for LSP"; + } + + leaf forwarding-set { + type uint32 { + range "1..6"; + } + default "1"; + description "Forwarding set ID for forwarding classes"; + } + + } // list fc + + } // list class-forwarding-policy + + list path { + key "path-name"; + max-elements 65535; + description "Enter the path context"; + + leaf path-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Name for this LSP path"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of this tunnel"; + } + + list hop { + key "hop-index"; + max-elements 255; + description "Enter the hop context"; + + leaf hop-index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..1024"; + } + } + description "Index to identify a particular hop"; + } + + leaf ip-address { + type types-sros:ip-address; + sros-ext:immutable; + mandatory true; + description "IPv4 address of this hop"; + } + + leaf type { + type enumeration { + enum "strict" { value 1; } + enum "loose" { value 2; } + } + mandatory true; + description "Tunnel hop type"; + } + + } // list hop + + } // list path + + list lsp-template { + key "template-name"; + max-elements 4096; + description "Enter the lsp-template context"; + + leaf template-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of the LSP template to automatically create and signal multiple LSP instances"; + } + + leaf type { + type enumeration { + enum "p2mp-rsvp" { value 1; } + enum "p2p-rsvp-one-hop" { value 2; } + enum "p2p-rsvp-mesh" { value 3; } + enum "p2p-sr-te-one-hop" { value 4; } + enum "p2p-sr-te-mesh" { value 5; } + enum "p2p-sr-te-pce-init" { value 6; } + } + sros-ext:immutable; + mandatory true; + description "Configure type of the LSP template."; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of LSP template"; + } + + leaf backup-class-type { + type types-mpls:class-type; + default "0"; + description "Configure backup-class-type for this LSP template."; + } + + leaf bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Specify bandwidth in mbps for LSP instances created using this LSP template."; + } + + leaf bgp-shortcut { + type boolean; + default "true"; + description "Enable/disable use of RSVP LSP for IPv4 BGP routes."; + } + + leaf bgp-transport-tunnel { + type boolean; + default "true"; + description "Include/exclude use of RSVP LSP as transport LSP for labeled IPv4 BGP routes."; + } + + leaf default-path { + type types-sros:named-item-64; + sros-ext:immutable; + description + "Specify default path to be used for signaling LSP instances created using this + LSP template."; + } + + leaf from { + type types-sros:ip-address; + description "IP address of the ingress router for the LSP template."; + } + + leaf hop-limit { + type uint16 { + range "2..255"; + } + default "255"; + description + "Configure maximum number of hops that can be traversed by LSP instances + created using this LSP template."; + } + + leaf ldp-over-rsvp { + type boolean; + default "true"; + description "Configure if this LSP will be included in LDP over RSVP."; + } + + leaf metric { + type uint32 { + range "0..16777215"; + } + default "0"; + description "Configure LSP template metric."; + } + + leaf vprn-auto-bind { + type boolean; + default "true"; + description "Configure if this LSP will be included in auto-bind for VPRN services."; + } + + leaf pce-report { + type types-sros:bool-with-inherit; + description "Specifies whether to override the global configuration of reporting to PCE."; + } + + leaf entropy-label { + type types-sros:bool-with-inherit; + description "Configure Entropy Label for LSP Template."; + } + + leaf adaptive { + type boolean; + default "true"; + description "Enable/disable make-before-break functionality."; + } + + leaf adspec { + type boolean; + default "false"; + description "Enable/disable inclusion of ADSPEC objects in RSVP messages."; + } + + leaf class-type { + type types-mpls:class-type; + default "0"; + description "Configure class-type."; + } + + leaf least-fill { + type boolean; + default "false"; + description "Configure use of least-fill path selection method."; + } + + leaf load-balancing-weight { + type uint32 { + range "1..max"; + } + description "Configure load balancing weight."; + } + + leaf main-ct-retry-limit { + type uint32 { + range "1..10000"; + } + description "Max number of attempts before switching to backup class type."; + } + + leaf propagate-admin-group { + type boolean; + default "false"; + description "Enable/disable admin groups via session attribute object."; + } + + leaf retry-limit { + type uint32 { + range "1..10000"; + } + description "Max number of attempts made to reestablish the LSP after it has failed."; + } + + leaf retry-timer { + type uint32 { + range "1..600"; + } + units "seconds"; + default "30"; + description "Time between attempts to reestablish the LSP after it has failed."; + } + + leaf record { + type boolean; + default "true"; + description "Enable/disable recording of all hops."; + } + + leaf record-label { + type boolean; + default "true"; + description "Enable/disable recording of labels at each node or instance."; + } + + leaf template-id { + type union { + type uint32 { + range "1..max"; + } + type enumeration { + enum "default" { value 0; } + } + } + sros-ext:immutable; + description "The value indicates lsp template-id. Configure this if LSP Template is of type p2p-sr-te-pce-init."; + } + + leaf-list include-admin-group { + type types-sros:named-item; + max-elements 32; + description "Admin group name included when LSP is set up"; + } + + leaf-list exclude-admin-group { + type types-sros:named-item; + max-elements 32; + description "Admin group name excluded when LSP is set up"; + } + + container class-forwarding { + presence "Configure class based forwarding."; + description "Enter the class-forwarding context"; + + choice cbf-choice { + default "default-lsp-and-fc"; + case default-lsp-and-fc { + + leaf default-lsp { + type boolean; + default "false"; + description "Use the default LSP configuration for specified LSP or LSP template"; + } + + leaf-list fc { + type enumeration { + enum "be" { value 0; } + enum "l2" { value 1; } + enum "af" { value 2; } + enum "l1" { value 3; } + enum "h2" { value 4; } + enum "ef" { value 5; } + enum "h1" { value 6; } + enum "nc" { value 7; } + } + max-elements 8; + description "One or more forwarding classes for LSP instances"; + } + + } + case forwarding-set { + + container forwarding-set { + description "Enter the forwarding-set context"; + + leaf policy { + type types-sros:named-item; + description "Name for the class based forwarding policy for LSP instances"; + } + + leaf set { + type uint32 { + range "1..6"; + } + description "Forwarding set ID"; + } + + } // container forwarding-set + + } + } + } // container class-forwarding + + container cspf { + description "Enter the cspf context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the CSPF support for LSP"; + } + + leaf use-te-metric { + type boolean; + default "false"; + description "TE metric for the LSP path computation by CSPF"; + } + + } // container cspf + + container priority { + description "Enter the priority context"; + + leaf setup-priority { + type types-mpls:priority; + default "7"; + description "Setup priority when insufficient bandwidth is available to set up LSP"; + } + + leaf hold-priority { + type types-mpls:priority; + default "0"; + description "Hold priority when insufficient bandwidth is available to set up LSP"; + } + + } // container priority + + container fast-reroute { + presence "Enable/Disable fast reroute for LSP Template instances."; + description "Enter the fast-reroute context"; + + leaf hop-limit { + type uint32 { + range "0..255"; + } + default "16"; + description "Total number of hops a detour or backup LSP can take before merging back onto the main LSP path"; + } + + leaf propagate-admin-group { + type boolean; + default "false"; + description "Enable signaling of the primary LSP path admin-group constraints in the FRR object at ingress"; + } + + leaf frr-method { + type types-mpls:frr-method-type; + default "facility"; + description "Fast Reroute method for the LSPs that are dynamically created using this LSP template"; + } + + leaf node-protect { + type boolean; + default "false"; + description "Enable node and link protection for the specified LSP"; + } + + } // container fast-reroute + + container igp-shortcut { + description "Enter the igp-shortcut context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the RSVP LSP to be used as a shortcut while resolving IGP routes"; + } + + choice igp-choice { + case lfa-type { + + leaf lfa-type { + type enumeration { + enum "lfa-protect" { value 1; } + enum "lfa-only" { value 2; } + } + description "Specific RSVP LSP by IS-IS and OSPF routing protocols to assign as shortcut or as forwarding adjacency"; + } + + } + case relative-metric { + + leaf relative-metric { + type int32 { + range "-10..10"; + } + description "Shortest IGP cost between the endpoints of the LSP plus the configured offset"; + } + + } + } + } // container igp-shortcut + + container max-sr-labels { + description "Enter the max-sr-labels context"; + + leaf label-stack-size { + type uint32 { + range "1..11"; + } + default "6"; + description "Size for the maximum segment routing label stack"; + } + + leaf additional-frr-labels { + type uint32 { + range "0..4"; + } + default "1"; + description "Maximum number of additional overhead labels"; + } + + } // container max-sr-labels + + list admin-tag { + key "name"; + max-elements 4; + description "Enter the admin-tag context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type string { + length "1..32"; + } + } + description "Name of the admin tags"; + } + + } // list admin-tag + + container auto-bandwidth { + presence "Enable/disable auto bandwidth for LSP template."; + description "Enter the auto-bandwidth context"; + + leaf max-bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "100000"; + description "Maximum bandwidth of auto-bandwidth to request for the LSP"; + } + + leaf min-bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum bandwidth of auto-bandwidth to request for the LSP"; + } + + leaf monitor-bandwidth { + type boolean; + default "false"; + description "Collect and display auto-bandwidth measurements for the LSP"; + } + + list fc { + key "fc-name"; + max-elements 8; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name for LSP"; + } + + leaf sampling-weight { + type types-sros:percent; + default "100"; + description "Forwarding class weight for LSP"; + } + + } // list fc + + container adjust-down { + description "Enter the adjust-down context"; + + leaf percent { + type types-sros:percent; + default "5"; + description "Minimum difference in percent between LSP bandwidth reservation and the maximum average data rate"; + } + + leaf bw { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum difference in absolute bandwidth between LSP bandwidth reservation and max average data rate"; + } + + } // container adjust-down + + container adjust-up { + description "Enter the adjust-up context"; + + leaf percent { + type types-sros:percent; + default "5"; + description "Minimum difference in percent between LSP bandwidth reservation and the maximum average data rate"; + } + + leaf bw { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum difference in absolute bandwidth between LSP bandwidth reservation and max average data rate"; + } + + } // container adjust-up + + container multipliers { + description "Enter the multipliers context"; + + leaf sample-multiplier { + type uint32 { + range "1..511"; + } + description "Multiplier for collection intervals in a sample interval"; + } + + leaf adjust-multiplier { + type uint32 { + range "1..16383"; + } + description "Number of collection intervals in the adjust interval"; + } + + } // container multipliers + + container overflow-limit { + presence "Configure overflow limit for auto-bandwidth for LSP."; + description "Enter the overflow-limit context"; + + leaf threshold { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between the LSP bandwidth and the sampled data rate"; + } + + leaf bw { + type uint32 { + range "1..100000"; + } + units "megabps"; + description "Minimum difference in absolute bandwidth between the LSP bandwidth and the sampled data rate"; + } + + leaf number { + type uint32 { + range "1..10"; + } + mandatory true; + description "Number of overflow samples to trigger an overflow auto-bandwidth adjustment attempt"; + } + + } // container overflow-limit + + container underflow-limit { + presence "Configure underflow limit for auto-bandwidth for LSP."; + description "Enter the underflow-limit context"; + + leaf threshold { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between the LSP bandwidth and the sampled data rate"; + } + + leaf bw { + type uint32 { + range "1..100000"; + } + units "megabps"; + description "Minimum difference in absolute bandwidth between the LSP bandwidth and the sampled data rate"; + } + + leaf number { + type uint32 { + range "1..10"; + } + mandatory true; + description "Number of overflow samples to trigger an overflow auto-bandwidth adjustment attempt"; + } + + } // container underflow-limit + + } // container auto-bandwidth + + container egress-statistics { + presence "Configures LSP template Egress statistics."; + description "Enter the egress-statistics context"; + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + } // container egress-statistics + + container bfd { + description "Enter the bfd context"; + + leaf bfd-liveness { + type boolean; + default "false"; + description "Enable BFD"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template"; + } + + leaf lsp-ping-interval { + type union { + type uint32 { + range "60..300"; + } + type enumeration { + enum "none" { value 0; } + } + } + units "seconds"; + default "60"; + description "Interval for periodic LSP ping for BFD bootstrapping"; + } + + leaf failure-action { + type enumeration { + enum "none" { value 0; } + enum "down" { value 1; } + } + default "none"; + description "Indicates the action to be taken when LSP BFD session fails"; + } + + } // container bfd + + } // list lsp-template + + list lsp { + key "lsp-name"; + description "Enter the lsp context"; + + leaf lsp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Labeled Switch path name"; + } + + leaf type { + type enumeration { + enum "p2p-rsvp" { value 2; } + enum "p2p-static-mpls" { value 3; } + enum "p2p-rsvp-bypass" { value 4; } + enum "p2mp-rsvp" { value 5; } + enum "p2mp-rsvp-auto" { value 6; } + enum "p2p-rsvp-mesh" { value 8; } + enum "p2p-rsvp-one-hop" { value 9; } + enum "p2p-sr-te" { value 10; } + enum "p2p-sr-te-mesh" { value 11; } + enum "p2p-sr-te-one-hop" { value 12; } + enum "p2p-sr-te-pce-init" { value 13; } + } + sros-ext:immutable; + mandatory true; + description "LSP for bypass protection, point to multipoint, segment routing or MPLS-TP static LSP"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the LSP"; + } + + leaf exclude-node { + type types-sros:ip-address; + description "Exclude Routers object to be included in the bypass path message"; + } + + leaf from { + type types-sros:ip-address; + description "Source IP address of this LSP"; + } + + leaf to { + type types-sros:ip-address; + description "Destination IP address or the egress router for the LSP"; + } + + leaf hop-limit { + type uint32 { + range "2..255"; + } + default "255"; + description "Maximum number of hops that an LSP can traverse including ingress and egress routers"; + } + + leaf p2mp-id { + type uint32 { + range "1..65535"; + } + description "Unique identifier as Point-to-Multipoint (P2MP) identifier"; + } + + leaf pce-computation { + type boolean; + default "false"; + description "LSP path computation request sent to local CSPF or to PCE"; + } + + leaf pce-control { + type boolean; + default "false"; + description "Control of path (delegation) to Path Computation Engine (PCE) to be used"; + } + + leaf revert-timer { + type uint32 { + range "1..4320"; + } + units "minutes"; + description "Revert timer for this LSP"; + } + + leaf rsvp-resv-style { + type enumeration { + enum "se" { value 1; } + enum "ff" { value 2; } + } + default "se"; + description "Reservation style for RSVP"; + } + + leaf bgp-shortcut { + type boolean; + default "true"; + description "Include LSP for BGP routes"; + } + + leaf bgp-transport-tunnel { + type boolean; + default "true"; + description "Include LSP as transport LSP for labeled BGP routes"; + } + + leaf ldp-over-rsvp { + type boolean; + default "true"; + description "Include this LSP in LDP over RSVP"; + } + + leaf metric { + type uint32 { + range "0..16777215"; + } + default "0"; + description "LSP metric that forces to a constant value"; + } + + leaf vprn-auto-bind { + type boolean; + default "true"; + description "Include this LSP in auto-bind for VPRN services"; + } + + leaf pce-report { + type types-sros:bool-with-inherit; + description "Global configuration of reporting to PCE to override"; + } + + leaf entropy-label { + type types-sros:bool-with-inherit; + description "Entropy label"; + } + + leaf adaptive { + type boolean; + default "true"; + description "Enable/disable make-before-break functionality."; + } + + leaf adspec { + type boolean; + default "false"; + description "Enable/disable inclusion of ADSPEC object in RSVP messages."; + } + + leaf class-type { + type types-mpls:class-type; + default "0"; + description "Configure class type."; + } + + leaf least-fill { + type boolean; + default "false"; + description "Configure use of least-fill path selection method."; + } + + leaf load-balancing-weight { + type uint32 { + range "1..max"; + } + description "Configure load balancing weight."; + } + + leaf main-ct-retry-limit { + type uint32 { + range "1..10000"; + } + description "Max number of attempts before switching to backup class type."; + } + + leaf propagate-admin-group { + type boolean; + default "false"; + description "Enable/disable admin groups via session attribute object."; + } + + leaf retry-limit { + type uint32 { + range "1..10000"; + } + description "Max number of attempts made to reestablish the LSP after it has failed."; + } + + leaf retry-timer { + type uint32 { + range "1..600"; + } + units "seconds"; + default "30"; + description "Time between attempts to reestablish the LSP after it has failed."; + } + + leaf-list include-admin-group { + type types-sros:named-item; + max-elements 32; + description "Admin group name included when LSP is set up"; + } + + leaf-list exclude-admin-group { + type types-sros:named-item; + max-elements 32; + description "Name of admin group excluded when LSP is set up"; + } + + container class-forwarding { + presence "Configure class based forwarding."; + description "Enter the class-forwarding context"; + + choice cbf-choice { + default "default-lsp-and-fc"; + case default-lsp-and-fc { + + leaf default-lsp { + type boolean; + default "false"; + description "Use the default LSP configuration for specified LSP or LSP template"; + } + + leaf-list fc { + type enumeration { + enum "be" { value 0; } + enum "l2" { value 1; } + enum "af" { value 2; } + enum "l1" { value 3; } + enum "h2" { value 4; } + enum "ef" { value 5; } + enum "h1" { value 6; } + enum "nc" { value 7; } + } + max-elements 8; + description "One or more forwarding classes for LSP instances"; + } + + } + case forwarding-set { + + container forwarding-set { + description "Enter the forwarding-set context"; + + leaf policy { + type types-sros:named-item; + description "Name for the class based forwarding policy for LSP instances"; + } + + leaf set { + type uint32 { + range "1..6"; + } + description "Forwarding set ID"; + } + + } // container forwarding-set + + } + } + } // container class-forwarding + + container cspf { + presence "Enable/disable CSPF support"; + description "Enter the cspf context"; + + leaf use-te-metric { + type boolean; + default "false"; + description "TE metric to the LSP path computation by CSPF"; + } + + } // container cspf + + container igp-shortcut { + description "Enter the igp-shortcut context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the LSP to be used as a shortcut while resolving IGP routes"; + } + + choice igp-choice { + case lfa-type { + + leaf lfa-type { + type enumeration { + enum "lfa-protect" { value 1; } + enum "lfa-only" { value 2; } + } + description "Specific RSVP LSP by IS-IS and OSPF routing protocols to assign as shortcut or as forwarding adjacency"; + } + + } + case relative-metric { + + leaf relative-metric { + type int32 { + range "-10..10"; + } + description "Shortest IGP cost between the endpoints of the LSP plus the configured offset"; + } + + } + } + } // container igp-shortcut + + container fast-reroute { + presence "Enable/Disable the fast reroute method."; + description "Enter the fast-reroute context"; + + leaf hop-limit { + type uint32 { + range "0..255"; + } + default "16"; + description "Total number of hops a detour or backup LSP can take before merging back onto the main LSP path"; + } + + leaf propagate-admin-group { + type boolean; + default "false"; + description "Enable signaling of the primary LSP path admin-group constraints in the FRR object at ingress"; + } + + leaf frr-method { + type types-mpls:frr-method-type; + default "one-to-one"; + description "Fast Reroute method"; + } + + leaf node-protect { + type boolean; + default "true"; + description "Enable node and link protection for the specified LSP"; + } + + } // container fast-reroute + + container max-sr-labels { + description "Enter the max-sr-labels context"; + + leaf label-stack-size { + type uint32 { + range "1..11"; + } + default "6"; + description "Maximum Label Stack size"; + } + + leaf additional-frr-labels { + type uint32 { + range "0..4"; + } + default "1"; + description "Value for the maximum additional overhead labels"; + } + + } // container max-sr-labels + + list admin-tag { + key "name"; + max-elements 4; + description "Enter the admin-tag context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type string { + length "1..32"; + } + } + description "Name of the admin tags"; + } + + } // list admin-tag + + container auto-bandwidth { + presence "Enable/disable auto bandwidth for LSP."; + description "Enter the auto-bandwidth context"; + + leaf max-bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "100000"; + description "Maximum bandwidth of auto-bandwidth to request for the LSP"; + } + + leaf min-bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum bandwidth of auto-bandwidth to request for the LSP"; + } + + leaf monitor-bandwidth { + type boolean; + default "false"; + description "Collect and display auto-bandwidth measurements for the LSP"; + } + + list fc { + key "fc-name"; + max-elements 8; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class name for LSP"; + } + + leaf sampling-weight { + type types-sros:percent; + default "100"; + description "Forwarding class weight for LSP"; + } + + } // list fc + + container adjust-down { + description "Enter the adjust-down context"; + + leaf percent { + type types-sros:percent; + default "5"; + description "Minimum difference in percent between LSP bandwidth reservation and the maximum average data rate"; + } + + leaf bw { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum difference in absolute bandwidth between LSP bandwidth reservation and max average data rate"; + } + + } // container adjust-down + + container adjust-up { + description "Enter the adjust-up context"; + + leaf percent { + type types-sros:percent; + default "5"; + description "Minimum difference in percent between LSP bandwidth reservation and the maximum average data rate"; + } + + leaf bw { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Minimum difference in absolute bandwidth between LSP bandwidth reservation and max average data rate"; + } + + } // container adjust-up + + container multipliers { + description "Enter the multipliers context"; + + leaf sample-multiplier { + type uint32 { + range "1..511"; + } + description "Multiplier for collection intervals in a sample interval"; + } + + leaf adjust-multiplier { + type uint32 { + range "1..16383"; + } + description "Number of collection intervals in the adjust interval"; + } + + } // container multipliers + + container overflow-limit { + presence "Configure overflow limit for auto-bandwidth for LSP."; + description "Enter the overflow-limit context"; + + leaf threshold { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between the LSP bandwidth and the sampled data rate"; + } + + leaf bw { + type uint32 { + range "1..100000"; + } + units "megabps"; + description "Minimum difference in absolute bandwidth between the LSP bandwidth and the sampled data rate"; + } + + leaf number { + type uint32 { + range "1..10"; + } + mandatory true; + description "Number of overflow samples to trigger an overflow auto-bandwidth adjustment attempt"; + } + + } // container overflow-limit + + container underflow-limit { + presence "Configure underflow limit for auto-bandwidth for LSP."; + description "Enter the underflow-limit context"; + + leaf threshold { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between the LSP bandwidth and the sampled data rate"; + } + + leaf bw { + type uint32 { + range "1..100000"; + } + units "megabps"; + description "Minimum difference in absolute bandwidth between the LSP bandwidth and the sampled data rate"; + } + + leaf number { + type uint32 { + range "1..10"; + } + mandatory true; + description "Number of overflow samples to trigger an overflow auto-bandwidth adjustment attempt"; + } + + } // container underflow-limit + + container use-last-adj-bw { + presence "Enable/disable use of last adjusted bandwidth for LSP."; + description "Enable/disable use of last adjusted bandwidth for LSP."; + + leaf secondary-retry-limit { + type types-mpls:retry-limit; + default "5"; + description + "Specify the max number of retry attempts that will be made + to signal the secondary path with the last adjusted bandwidth."; + } + + } // container use-last-adj-bw + + } // container auto-bandwidth + + container egress-statistics { + presence "Enable/disable LSP egress statistics."; + description "Enter the egress-statistics context"; + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress statistics for LSP"; + } + + } // container egress-statistics + + container ingress-statistics { + presence "Enable/disable LSP ingress statistics."; + description "Enter the ingress-statistics context"; + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress statistics for LSP"; + } + + } // container ingress-statistics + + container bfd { + description "Enter the bfd context"; + + leaf bfd-liveness { + type boolean; + default "false"; + description "Enable BFD"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template"; + } + + leaf lsp-ping-interval { + type union { + type uint32 { + range "60..300"; + } + type enumeration { + enum "none" { value 0; } + } + } + units "seconds"; + default "60"; + description "Interval for periodic LSP ping for BFD bootstrapping"; + } + + leaf failure-action { + type enumeration { + enum "none" { value 0; } + enum "down" { value 1; } + enum "failover" { value 2; } + } + default "none"; + description "Perform action when LSP BFD session fails"; + } + + } // container bfd + + list path-profile { + key "profile-id"; + max-elements 5; + description "Enter the path-profile context"; + + leaf profile-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..max"; + } + } + description "Profile ID for the specified LSP"; + } + + leaf path-group { + type uint32; + default "0"; + description "Profile ID for the specified LSP"; + } + + } // list path-profile + + list primary { + key "path-name"; + max-elements 1; + description "Enter the primary context"; + + leaf path-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Path name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of LSP path"; + } + + leaf adaptive { + type boolean; + description "Enable/disable make-before-break functionality."; + } + + leaf bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Amount of bandwidth to be reserved."; + } + + leaf hop-limit { + type uint32 { + range "2..255"; + } + description + "The maximum number of hops that an LSP will traverse + including the ingress and egress LSRs."; + } + + leaf record { + type boolean; + default "true"; + description "Enable/disable recording of all hops."; + } + + leaf record-label { + type boolean; + default "true"; + description "Enable/disable recording of labels at each node or instance."; + } + + leaf class-type { + type types-mpls:class-type; + description "Class-type"; + } + + leaf backup-class-type { + type types-mpls:class-type; + description "Class-type for the LSP or LSP path"; + } + + container priority { + description "Enter the priority context"; + + leaf setup-priority { + type types-mpls:priority; + default "7"; + description "Setup priority when insufficient bandwidth is available to set up LSP"; + } + + leaf hold-priority { + type types-mpls:priority; + default "0"; + description "Hold priority when insufficient bandwidth is available to set up LSP"; + } + + } // container priority + + container include-admin-group { + presence + "Configure administrative groups that should be included + when the LSP path is setup."; + description "Enter the include-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups that are included when LSP path is setup"; + } + + } // container include-admin-group + + container exclude-admin-group { + presence + "Configure administrative groups that should be excluded + when the LSP path is setup."; + description "Enter the exclude-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups to exclude when the LSP path is setup"; + } + + } // container exclude-admin-group + + container bfd { + description "Enter the bfd context"; + + leaf bfd-liveness { + type boolean; + default "false"; + description "Enable BFD"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template"; + } + + leaf lsp-ping-interval { + type union { + type uint32 { + range "60..300"; + } + type enumeration { + enum "none" { value 0; } + } + } + units "seconds"; + default "60"; + description "Interval for periodic LSP ping for BFD bootstrapping"; + } + + } // container bfd + + } // list primary + + list secondary { + key "path-name"; + max-elements 8; + description "Enter the secondary context"; + + leaf path-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Path name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of LSP path"; + } + + leaf adaptive { + type boolean; + description "Enable/disable make-before-break functionality."; + } + + leaf bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Amount of bandwidth to be reserved."; + } + + leaf hop-limit { + type uint32 { + range "2..255"; + } + description + "The maximum number of hops that an LSP will traverse + including the ingress and egress LSRs."; + } + + leaf record { + type boolean; + default "true"; + description "Enable/disable recording of all hops."; + } + + leaf record-label { + type boolean; + default "true"; + description "Enable/disable recording of labels at each node or instance."; + } + + leaf class-type { + type types-mpls:class-type; + description "Class-type"; + } + + leaf path-preference { + type int32 { + range "0..255"; + } + default "255"; + description "Path preference for the secondary standby path"; + } + + leaf srlg { + type boolean; + default "false"; + description "Use SRLG constraint in secondary path computation for an LSP at the head-end LER"; + } + + leaf standby { + type boolean; + default "false"; + description "Maintain secondary path LSP indefinitely in hot standby state"; + } + + container priority { + description "Enter the priority context"; + + leaf setup-priority { + type types-mpls:priority; + default "7"; + description "Setup priority when insufficient bandwidth is available to set up LSP"; + } + + leaf hold-priority { + type types-mpls:priority; + default "0"; + description "Hold priority when insufficient bandwidth is available to set up LSP"; + } + + } // container priority + + container include-admin-group { + presence + "Configure administrative groups that should be included + when the LSP path is setup."; + description "Enter the include-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups that are included when LSP path is setup"; + } + + } // container include-admin-group + + container exclude-admin-group { + presence + "Configure administrative groups that should be excluded + when the LSP path is setup."; + description "Enter the exclude-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups to exclude when the LSP path is setup"; + } + + } // container exclude-admin-group + + } // list secondary + + list primary-p2mp-instance { + key "instance-name"; + max-elements 1; + description "Enter the primary-p2mp-instance context"; + + leaf instance-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "The unique name which identifies this P2MP LSP for this virtual router. "; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of LSP path"; + } + + leaf adaptive { + type boolean; + description "Enable/disable make-before-break functionality."; + } + + leaf bandwidth { + type uint32 { + range "0..100000"; + } + units "megabps"; + default "0"; + description "Amount of bandwidth to be reserved."; + } + + leaf hop-limit { + type uint32 { + range "2..255"; + } + description + "The maximum number of hops that an LSP will traverse + including the ingress and egress LSRs."; + } + + leaf record { + type boolean; + default "true"; + description "Enable/disable recording of all hops."; + } + + leaf record-label { + type boolean; + default "true"; + description "Enable/disable recording of labels at each node or instance."; + } + + container include-admin-group { + presence + "Configure administrative groups that should be included + when the P2MP LSP is setup."; + description "Enter the include-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups that are included when LSP path is setup"; + } + + } // container include-admin-group + + container exclude-admin-group { + presence + "Configure administrative groups that should be excluded + when the P2MP LSP is setup."; + description "Enter the exclude-admin-group context"; + + leaf-list group { + type types-sros:named-item; + min-elements 1; + max-elements 32; + description "Groups to exclude when the LSP path is setup"; + } + + } // container exclude-admin-group + + list s2l-path { + key "path-name to"; + max-elements 650; + description "Enter the s2l-path context"; + + leaf path-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "A label switch path (P2MP LSP) name."; + } + + leaf to { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-address; + } + description "The IP address of the destination address of the S2L sub LSP."; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administratively enable/disable the P2MP S2L sub LSP."; + } + + } // list s2l-path + + } // list primary-p2mp-instance + + } // list lsp + + list auto-lsp { + key "template-name"; + max-elements 500; + description "Enter the auto-lsp context"; + + leaf template-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name of the LSP template used to automatically create and signal multiple LSP instances"; + } + + choice auto-lsp-choice { + case one-hop { + + leaf one-hop { + type boolean; + default "false"; + description "Enable the automatic signaling of one-hop point-to-point LSPs"; + } + + } + case policy { + + leaf-list policy { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description + "Specify policies to bind to this LSP template to enable automatic + creation of mesh point to point (P2P) LSPs."; + } + + } + } + } // list auto-lsp + + list static-lsp { + key "lsp-name"; + max-elements 1000; + description "Enter the static-lsp context"; + + leaf lsp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Labeled Switch path name"; + } + + leaf metric { + type uint32 { + range "1..16777215"; + } + description "MPLS static LSP metric to select an LSP"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the static LSP"; + } + + leaf to { + type types-sros:ipv4-unicast-address; + description "Destination IP address or the egress router for the LSP"; + } + + container push { + presence + "Configure label to be pushed on the label stack and + the next hop IP address."; + description "Enter the push context"; + + leaf out-label { + type union { + type uint32 { + range "16..1048575"; + } + type enumeration { + enum "implicit-null-label" { value 3; } + } + } + mandatory true; + description "Push specific label onto the top of the outgoing packet's label stack"; + } + + leaf next-hop { + type types-sros:ipv4-unicast-address; + mandatory true; + description "IP address for the next hop"; + } + + } // container push + + } // list static-lsp + + container forwarding-policies { + presence "Enable/disable Forwarding Policies for MPLS."; + description "Enter the forwarding-policies context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of MPLS forwarding policies"; + } + + leaf reserved-label-block { + type types-sros:named-item-64; + description "Reserved label block"; + } + + list forwarding-policy { + key "policy-name"; + max-elements 65536; + description "Enter the forwarding-policy context"; + + leaf policy-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Forwarding policy name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the forwarding policy"; + } + + leaf binding-label { + type types-sros:mpls-label-or-zero; + description "Binding label"; + } + + leaf endpoint { + type types-sros:ip-unicast-address; + description "Configure endpoint address."; + } + + leaf revert-timer { + type uint32 { + range "1..600"; + } + units "seconds"; + description "Revert timer"; + } + + leaf preference { + type uint32 { + range "1..255"; + } + default "255"; + description "Preference number"; + } + + leaf metric { + type uint32 { + range "1..16777215"; + } + description "Configure metric."; + } + + leaf tunnel-table-pref { + type uint32 { + range "1..255"; + } + default "255"; + description "Configure tunnel table preference."; + } + + list next-hop-group { + key "index"; + max-elements 32; + description "Enter the next-hop-group context"; + + leaf index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..32"; + } + } + description "Index for next hop group"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of next hop group"; + } + + leaf resolution-type { + type enumeration { + enum "direct" { value 1; } + enum "indirect" { value 2; } + } + sros-ext:immutable; + mandatory true; + description "Resolution type for next hop group"; + } + + leaf load-balancing-weight { + type uint32 { + range "1..max"; + } + description "Configure load balancing weight."; + } + + container primary-next-hop { + presence "Configure primary next-hop."; + description "Enter the primary-next-hop context"; + + leaf next-hop { + type types-sros:ip-unicast-address; + description "Next hop address"; + } + + list pushed-labels { + key "index"; + max-elements 10; + description "Enter the pushed-labels context"; + + leaf index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..10"; + } + } + description "Index for push-label."; + } + + leaf label { + type uint32 { + range "1..1048575"; + } + mandatory true; + description "Push label value."; + } + + } // list pushed-labels + + } // container primary-next-hop + + container backup-next-hop { + presence "Configure backup next-hop."; + description "Enter the backup-next-hop context"; + + leaf next-hop { + type types-sros:ip-unicast-address; + description "Next hop address"; + } + + list pushed-labels { + key "index"; + max-elements 10; + description "Enter the pushed-labels context"; + + leaf index { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..10"; + } + } + description "Index for push-label."; + } + + leaf label { + type uint32 { + range "1..1048575"; + } + mandatory true; + description "Push label value."; + } + + } // list pushed-labels + + } // container backup-next-hop + + } // list next-hop-group + + container ingress-statistics { + presence "Configure ingress-statistics."; + description "Enter the ingress-statistics context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of egress or ingress statistics"; + } + + } // container ingress-statistics + + } // list forwarding-policy + + } // container forwarding-policies + + container pce-init-lsp { + presence "Enable/disable support of PCE initiated LSPs"; + description "Enable/disable support of PCE initiated LSPs."; + + container sr-te { + presence "Enable/Disable support of PCE initiated SR-TE LSPs"; + description "Specifies if PCE initiated SR-TE LSPs are supported on the system."; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administratively enable or disable PCE initiated SR-TE LSPs."; + } + + } // container sr-te + + } // container pce-init-lsp + + container ingress-statistics { + description "Enter the ingress-statistics context"; + + list lsp { + key "sender lsp-name"; + description "Enter the lsp context"; + + leaf sender { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-address; + } + description "Sender address"; + } + + leaf lsp-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "Administrative name for Labeled Switch Path."; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress statistics for LSP"; + } + + } // list lsp + + list p2mp-template-lsp { + key "sender rsvp-session-name"; + description "Enter the p2mp-template-lsp context"; + + leaf sender { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-address; + } + description "Sender address"; + } + + leaf rsvp-session-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "RSVP session name"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress statistics for LSP"; + } + + leaf max-stats { + type uint32 { + range "1..8191"; + } + default "8191"; + description "Maximum number of statistic indices"; + } + + } // list p2mp-template-lsp + + list p2p-template-lsp { + key "sender rsvp-session-name"; + description "Enter the p2p-template-lsp context"; + + leaf sender { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-address; + } + description "Sender address"; + } + + leaf rsvp-session-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item-64; + } + description "RSVP session name"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of ingress statistics for LSP"; + } + + leaf max-stats { + type uint32 { + range "1..8191"; + } + default "8191"; + description "Maximum number of statistic indices"; + } + + } // list p2p-template-lsp + + } // container ingress-statistics + + container aux-stats { + presence "Configure aux-stats."; + description "Enter the aux-stats context"; + + leaf sr { + type boolean; + default "false"; + description "Count Segment Routing (SR) traffic in the auxiliary MPLS statistics table"; + } + + } // container aux-stats + + } // container mpls + + container rsvp { + presence "Enables RSVP functionality."; + description "Enter the rsvp context"; + + leaf entropy-label-capability { + type boolean; + default "false"; + description "Allow receiving and processing of the entropy label and ELI on incoming packets of RSVP LSPs"; + } + + leaf graceful-shutdown { + type boolean; + default "false"; + description "Initiate a graceful shutdown of all RSVP interfaces on the node"; + } + + leaf implicit-null-label { + type boolean; + default "false"; + description "Signal the implicit null option for all RSVP LSPs"; + } + + leaf keep-multiplier { + type uint32 { + range "1..255"; + } + default "3"; + description "Value for the keep-multiplier to declare a reservation or neighbor as down"; + } + + leaf include-node-id-in-rro { + type boolean; + default "false"; + description "Include the node-id sub-object in the RRO (Record Route Object) on the RSVP instance"; + } + + leaf p2mp-merge-point-abort-timer { + type uint32 { + range "1..65535"; + } + units "seconds"; + description "Merge pointer timer for abort timer"; + } + + leaf p2p-merge-point-abort-timer { + type uint32 { + range "1..65535"; + } + units "seconds"; + description "Merge pointer timer for P2P paths"; + } + + leaf preemption-timer { + type uint32 { + range "0..1800"; + } + units "seconds"; + default "300"; + description "Preemption timer for the MPLS instance"; + } + + leaf rapid-retransmit-time { + type uint32 { + range "1..100"; + } + units "deciseconds"; + default "5"; + description "Rapid retransmission interval to reliably deliver RSVP messages"; + } + + leaf rapid-retry-limit { + type uint32 { + range "1..6"; + } + default "3"; + description "Rapid retry limit to reliably deliver RSVP messages"; + } + + leaf refresh-reduction-over-bypass { + type boolean; + default "false"; + description "Enable/disable refresh reduction capabilities over all bypass tunnels."; + } + + leaf refresh-time { + type uint32 { + range "1..65535"; + } + units "seconds"; + default "30"; + description "Interval between refresh messages"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of RSVP"; + } + + leaf-list te-down-threshold { + type types-rsvp:rsvp-te-threshold-level; + max-elements 16; + ordered-by user; + description "Value for the te-down-threshold"; + } + + leaf-list te-up-threshold { + type types-rsvp:rsvp-te-threshold-level; + max-elements 16; + ordered-by user; + description "Value for the te-up-threshold"; + } + + container graceful-restart { + description "Enter the graceful-restart context"; + + leaf max-recovery { + type uint32 { + range "1..1800"; + } + units "seconds"; + default "300"; + description "Maximum time to wait before a graceful helper recovers the session"; + } + + leaf max-restart { + type uint32 { + range "1..300"; + } + units "seconds"; + default "120"; + description "Maximum time that a graceful helper waits for session restart after the neighbor is considered down"; + } + + } // container graceful-restart + + container msg-pacing { + presence "Enable/disable RSVP message pacing."; + description "Enter the msg-pacing context"; + + leaf max-burst { + type uint32 { + range "100..1000"; + } + default "650"; + description "Maximum RSVP messages that are sent over a specified period when message pacing is enabled"; + } + + leaf period { + type uint32 { + range "100..1000"; + } + units "milliseconds"; + default "100"; + description "Time for RSVP message pacing"; + } + + } // container msg-pacing + + container te-threshold-update { + presence "Enables RSVP threshold based IGP TE functionality."; + description "Enter the te-threshold-update context"; + + leaf on-cac-failure { + type boolean; + default "false"; + description "CAC (Call Admission Control) failure-triggered IGP update"; + } + + leaf update-timer { + type uint32 { + range "1..300"; + } + units "seconds"; + description "Timer-based IGP updates"; + } + + } // container te-threshold-update + + container dbw-accounting { + presence "Enables Dark Bandwidth accounting."; + description "Enter the dbw-accounting context"; + + leaf dbw-multiplier { + type uint32 { + range "0..1000"; + } + units "percent"; + default "100"; + description "Dark Bandwidth multiplier"; + } + + leaf sample-interval { + type uint32 { + range "10..600"; + } + units "seconds"; + default "30"; + description "Dark Bandwidth sample interval"; + } + + leaf sample-multiplier { + type uint32 { + range "1..10"; + } + default "3"; + description "Dark Bandwidth sample multiplier"; + } + + container up-threshold { + description "Enter the up-threshold context"; + + leaf percent { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between dark bandwidth and sampled data rate, to trigger IGP-TE update"; + } + + leaf bw { + type int32 { + range "0..1000000"; + } + units "megabps"; + description "Minimum absolute difference between dark bandwidth and sampled data rate to trigger IGP-TE update"; + } + + } // container up-threshold + + container down-threshold { + description "Enter the down-threshold context"; + + leaf percent { + type types-sros:percent; + default "0"; + description "Minimum difference in percent between dark bandwidth and sampled data rate, to trigger IGP-TE update"; + } + + leaf bw { + type int32 { + range "0..1000000"; + } + units "megabps"; + description "Minimum absolute difference between dark bandwidth and sampled data rate to trigger IGP-TE update"; + } + + } // container down-threshold + + } // container dbw-accounting + + container diffserv-te { + presence "Enables RSVP DiffServ TE functionality."; + description "Enter the diffserv-te context"; + + leaf admission-control-model { + type enumeration { + enum "mam" { value 1; } + enum "rdm" { value 2; } + } + mandatory true; + description "Parameters for the DiffServ TE node"; + } + + container class-type-bw { + description "Enter the class-type-bw context"; + + leaf ct0 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 0"; + } + + leaf ct1 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 1"; + } + + leaf ct2 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 2"; + } + + leaf ct3 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 3"; + } + + leaf ct4 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 4"; + } + + leaf ct5 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 5"; + } + + leaf ct6 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 6"; + } + + leaf ct7 { + type int32 { + range "0..100"; + } + default "0"; + description "Percentage of RSVP interface bandwidth for class type (CT) 7"; + } + + } // container class-type-bw + + list fc { + key "fc-name"; + description "Enter the fc context"; + + leaf fc-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:fc-name; + } + description "Forwarding class for this mapping"; + } + + leaf class-type { + type types-mpls:class-type; + mandatory true; + description "Diff-Serv Class Type (CT) for an LSP"; + } + + } // list fc + + list te-class { + key "te-class-number"; + description "Enter the te-class context"; + + leaf te-class-number { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "0..7"; + } + } + description "Unique value that identifies the TE class."; + } + + leaf class-type { + type types-mpls:class-type; + sros-ext:immutable; + mandatory true; + description "Class type (CT) associated with the TE class"; + } + + leaf priority { + type types-mpls:priority; + sros-ext:immutable; + mandatory true; + description "TE class priority"; + } + + } // list te-class + + } // container diffserv-te + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Index for router RSVP interface"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of RSVP on the interface"; + } + + leaf authentication-keychain { + type types-sros:named-item; + description "Configure TCP authentication keychain to use for the session."; + } + + leaf authentication-key { + type types-sros:encrypted-leaf { + length "1..51"; + } + description "Authentication or hash key string"; + } + + leaf bfd-liveness { + type boolean; + default "false"; + description "Enable BFD"; + } + + leaf graceful-restart-helper-mode { + type boolean; + default "false"; + description "Enable graceful restart helper for the RSVP interface"; + } + + leaf graceful-shutdown { + type boolean; + default "false"; + description "Initiate a graceful shutdown of RSVP interface"; + } + + leaf hello-interval { + type uint32 { + range "0..60"; + } + units "seconds"; + default "3"; + description "Time between RSVP Hello messages"; + } + + leaf subscription { + type uint32 { + range "0..1000"; + } + default "100"; + description "Percentage of the link bandwidth to use for reservation"; + } + + leaf dbw-multiplier { + type int32 { + range "0..1000"; + } + units "percent"; + description "Configure the Dark Bandwidth multiplier."; + } + + leaf implicit-null-label { + type boolean; + description "Signal the implicit null label value for all LSPs"; + } + + container class-type-bw { + presence "Enables RSVP interface class-type bw functionality."; + description "Enter the class-type-bw context"; + + leaf ct0 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 0"; + } + + leaf ct1 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 1"; + } + + leaf ct2 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 2"; + } + + leaf ct3 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 3"; + } + + leaf ct4 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 4"; + } + + leaf ct5 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 5"; + } + + leaf ct6 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 6"; + } + + leaf ct7 { + type int32 { + range "0..100"; + } + description "Percentage of link bandwidth for class type (CT) 7"; + } + + } // container class-type-bw + + container refresh-reduction { + presence "Enable/Disable refresh reduction."; + description "Enter the refresh-reduction context"; + + leaf reliable-delivery { + type boolean; + default "false"; + description "Reliable delivery of RSVP messages over the RSVP interface"; + } + + } // container refresh-reduction + + container dbw-up-threshold { + presence "Configure up threshold for Dark Bandwidth."; + description "Enter the dbw-up-threshold context"; + + leaf percent { + type int32 { + range "0..100"; + } + units "percent"; + description "Minimum difference in percent between dark bandwidth and sampled data rate, to trigger IGP-TE update"; + } + + leaf bw { + type int32 { + range "0..1000000"; + } + units "megabps"; + description "Minimum absolute difference between dark bandwidth and sampled data rate to trigger IGP-TE update"; + } + + } // container dbw-up-threshold + + container dbw-down-threshold { + presence "Configure down threshold for Dark Bandwidth."; + description "Enter the dbw-down-threshold context"; + + leaf percent { + type int32 { + range "0..100"; + } + units "percent"; + description "Minimum difference in percent between dark bandwidth and sampled data rate, to trigger IGP-TE update"; + } + + leaf bw { + type int32 { + range "0..1000000"; + } + units "megabps"; + description "Minimum absolute difference between dark bandwidth and sampled data rate to trigger IGP-TE update"; + } + + } // container dbw-down-threshold + + container te-down-threshold { + presence "Specifies down TE threshold levels."; + description "Enter the te-down-threshold context"; + + leaf-list value { + type types-rsvp:rsvp-te-threshold-level; + min-elements 1; + max-elements 16; + ordered-by user; + description "Specifies down TE threshold levels."; + } + + } // container te-down-threshold + + container te-up-threshold { + presence "Specifies up TE threshold levels."; + description "Enter the te-up-threshold context"; + + leaf-list value { + type types-rsvp:rsvp-te-threshold-level; + min-elements 1; + max-elements 16; + ordered-by user; + description "Specifies up TE threshold levels."; + } + + } // container te-up-threshold + + } // list interface + + } // container rsvp + + } // list router + + container service { + description "Enter the service context"; + + list vpls { + key "service-name"; + description "Enter the vpls context"; + + leaf service-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:service-name; + } + description "Name of the service"; + } + + leaf service-id { + type types-services:external-service-id; + sros-ext:immutable; + description "Unique service ID; cannot be used by any other service, regardless of service type"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf customer { + type types-services:customer-name; + sros-ext:immutable; + mandatory true; + description "Service customer ID"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the mirror destination service"; + } + + leaf vpn-id { + type types-services:vpn-id; + sros-ext:immutable; + description "VPN identifier for the service"; + } + + leaf service-mtu { + type int32 { + range "1..9194"; + } + default "1514"; + description "MTU size"; + } + + leaf etree { + type boolean; + sros-ext:immutable; + default "false"; + description "Use VPLS as an E-Tree VPLS"; + } + + leaf pbb-type { + type types-services:pbb-type; + sros-ext:immutable; + description "PBB VPLS type"; + } + + leaf mcast-ipv6-snooping-scope { + type enumeration { + enum "sg-based" { value 1; } + enum "mac-based" { value 2; } + } + default "mac-based"; + description "IPv6 multicast snooping scope"; + } + + leaf multicast-info-policy { + type types-sros:named-item; + description "Multicast information policy"; + } + + leaf shcv-policy-ipv4 { + type types-sros:external-named-item; + description "Subscriber host connectivity verification policy for IPv4"; + } + + leaf temp-flooding { + type int32 { + range "3..600"; + } + units "seconds"; + description "Temporary flooding"; + } + + container stp { + description "Enter the stp context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Enable/disable spanning tree protocol (STP)"; + } + + leaf forward-delay { + type int32 { + range "4..30"; + } + default "15"; + description "Configure forward-delay"; + } + + leaf hello-time { + type int32 { + range "1..10"; + } + default "2"; + description "Configure hello-time"; + } + + leaf hold-count { + type int32 { + range "1..20"; + } + default "6"; + description "Configure BPDU transmit hold count"; + } + + leaf maximum-age { + type int32 { + range "6..40"; + } + default "20"; + description "Configure maximum STP information age"; + } + + leaf mode { + type enumeration { + enum "rstp" { value 2; } + enum "comp-dot1w" { value 3; } + enum "dot1w" { value 4; } + } + default "rstp"; + description "Configure protocol version"; + } + + leaf priority { + type int32 { + range "0..65535"; + } + default "32768"; + description "Configure STP bridge priority"; + } + + } // container stp + + container fdb { + description "Enter the fdb context"; + + leaf discard-unknown { + type boolean; + default "false"; + description "Discard packets with unknown destination MAC addresses"; + } + + leaf mac-subnet-length { + type int32 { + range "24..48"; + } + default "48"; + description "MAC sub-net length."; + } + + leaf selective-learning { + type boolean; + default "false"; + description "Selective learning status."; + } + + container table { + description "Enter the table context"; + + leaf high-wmark { + type int32 { + range "0..100"; + } + default "95"; + description "High watermark for the FDB table"; + } + + leaf low-wmark { + type int32 { + range "0..100"; + } + default "90"; + description "Low watermark for the FDB table"; + } + + leaf size { + type int32 { + range "1..511999"; + } + default "250"; + description "Maximum MAC entries in the FDB"; + } + + } // container table + + container mac-learning { + description "Enter the mac-learning context"; + + leaf learning { + type boolean; + default "true"; + description "Enable learning of new MAC addresses"; + } + + leaf aging { + type boolean; + default "true"; + description "Enable aging of MAC addresses"; + } + + leaf local-age-time { + type int32 { + range "60..86400"; + } + default "300"; + description "Aging time for locally learned MAC addresses"; + } + + leaf remote-age-time { + type int32 { + range "60..86400"; + } + default "900"; + description "Aging time for locally learned MAC addresses"; + } + + } // container mac-learning + + container mac-move { + description "Enter the mac-move context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of MAC move"; + } + + } // container mac-move + + container static-mac { + description "Enter the static-mac context"; + + list mac { + key "mac-address"; + description "Enter the mac context"; + + leaf mac-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:mac-unicast-address-no-zero; + } + description "Static MAC address to SAP/SDP-binding or black-hole"; + } + + leaf monitor { + type enumeration { + enum "none" { value 0; } + enum "forward-status" { value 1; } + } + sros-ext:immutable; + default "none"; + description "Entity to be monitored to decide whether this entry can be installed in the FDB"; + } + + choice destination { + mandatory true; + case spoke-sdp { + + leaf spoke-sdp { + type types-services:sdp-bind-id; + sros-ext:immutable; + description "Spoke SDP bind associated with this MAC"; + } + + } + case mesh-sdp { + + leaf mesh-sdp { + type types-services:sdp-bind-id; + sros-ext:immutable; + description "Mesh SDP bind associated with this MAC"; + } + + } + case sap { + + leaf sap { + type types-sros:sap; + sros-ext:immutable; + description "SAP associated with this MAC"; + } + + } + case blackhole { + + leaf blackhole { + type empty; + sros-ext:immutable; + description "Create a static FDB entry for the MAC address to black-hole traffic"; + } + + } + case endpoint { + + leaf endpoint { + type types-sros:named-item; + sros-ext:immutable; + description "Endpoint associated with this MAC"; + } + + } + } + } // list mac + + } // container static-mac + + } // container fdb + + container mfib { + description "Enter the mfib context"; + + container table { + description "Enter the table context"; + + leaf high-wmark { + type int32 { + range "0..100"; + } + default "95"; + description "High watermark for the MFIB table"; + } + + leaf low-wmark { + type int32 { + range "0..100"; + } + default "90"; + description "Low watermark for the MFIB table"; + } + + leaf size { + type int32 { + range "1..40959"; + } + description "Maximum SG entries in the MFIB"; + } + + } // container table + + } // container mfib + + container mac-flush { + description "Enter the mac-flush context"; + + container tldp { + description "Enter the tldp context"; + + leaf propagate { + type boolean; + default "false"; + description "Propagate MAC flush frames from LDP peer to all mesh-SDP and Spoke-SDPs."; + } + + leaf send-on-failure { + type boolean; + default "false"; + description "Send MAC withdraw message on SAP/Spoke-SDP failure"; + } + + } // container tldp + + } // container mac-flush + + container vxlan { + description "Enter the vxlan context"; + + leaf source-vtep { + type types-sros:ip-unicast-address; + description "Vxlan source virtual tunnel endpoint information"; + } + + list instance { + key "vxlan-instance"; + description "Enter the instance context"; + + leaf vxlan-instance { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..2"; + } + } + default "1"; + description "VXLAN instance"; + } + + leaf vni { + type types-services:vxlan-vni; + sros-ext:immutable; + mandatory true; + description "VNI of the VXLAN"; + } + + leaf source-vtep-security { + type boolean; + default "false"; + description "Enable/disable source vtep security"; + } + + leaf rx-discard-on-ndf { + type enumeration { + enum "bm" { value 0; } + enum "bum" { value 1; } + enum "none" { value 2; } + } + default "bm"; + description "specifies the type of multicast traffic discarded on the receive side of when the vxlan instance is NDF"; + } + + container assisted-replication { + description "Enter the assisted-replication context"; + + choice role { + case leaf { + + container leaf { + presence "AR role as leaf."; + description "Enter the leaf context"; + + leaf acttime { + type uint32 { + range "1..255"; + } + units "seconds"; + description "Time for the leaf to wait before sending traffic to a new replicator"; + } + + } // container leaf + + } + case replicator { + + leaf replicator { + type empty; + description "AR role as replicator"; + } + + } + } + } // container assisted-replication + + container network { + description "Enter the network context"; + + container ingress { + description "Enter the ingress context"; + + container qos { + description "Enter the qos context"; + + container network { + description "Enter the network context"; + + leaf policy-name { + type types-qos:network-policy-name; + description "Ingress network policy name applied to this SDP binding"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Forwarding-plane queue group policy for this SDP binding"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Instance of the forwarding-plane ingress Queue Group for this SDP binding"; + } + + } // container fp-redirect-group + + } // container network + + } // container qos + + } // container ingress + + } // container network + + list egress-vtep { + key "ip-address"; + description "Enter the egress-vtep context"; + + leaf ip-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-address; + } + description "configure egress vtep address for entry"; + } + + } // list egress-vtep + + container fdb { + description "Enter the fdb context"; + + leaf discard-unknown-source { + type boolean; + default "false"; + description "Enable/disable discarding of frames with unknown source"; + } + + leaf maximum-mac-addresses { + type types-services:max-mac-addr; + description "Maximum number of MAC entries in the FDB from this vxlan instance"; + } + + leaf protected-src-mac-violation-action { + type types-services:vxlan-protected-src-mac-violation-action; + description "Action when a relearn request for a protected MAC is received"; + } + + container mac-learning { + description "Enter the mac-learning context"; + + leaf learning { + type boolean; + default "false"; + description "Enable/disable learning of new MAC addresses"; + } + + leaf aging { + type boolean; + default "false"; + description "Enable/disable aging of MAC addresses"; + } + + } // container mac-learning + + } // container fdb + + container igmp-snooping { + description "igmp-snooping configuration for the VXLAN instance."; + + leaf mrouter-port { + type boolean; + default "false"; + description "Configure as a multicast router port."; + } + + } // container igmp-snooping + + container mld-snooping { + description "mld-snooping configuration for the VXLAN instance."; + + leaf mrouter-port { + type boolean; + default "false"; + description "Configure as a multicast router port."; + } + + } // container mld-snooping + + } // list instance + + } // container vxlan + + container proxy-arp { + presence "Enable proxy arp configuration information."; + description "Enter the proxy-arp context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the proxy"; + } + + leaf dynamic-populate { + type boolean; + default "false"; + description "Populate proxy ARP entries from snooped GARP/ARP/ND messages on SAPs/SDP-bindings"; + } + + leaf age-time { + type union { + type int32 { + range "60..86400"; + } + type enumeration { + enum "never" { value 0; } + } + } + units "seconds"; + default "never"; + description "Aging timer for proxy entries, where entries are flushed upon timer expiry"; + } + + leaf send-refresh { + type union { + type int32 { + range "120..86400"; + } + type enumeration { + enum "never" { value 0; } + } + } + default "never"; + description "Time at which to send a refresh message"; + } + + leaf table-size { + type int32 { + range "1..16383"; + } + default "250"; + description "Maximum number of learned and static entries allowed in the proxy table of this service"; + } + + container evpn { + description "Enter the evpn context"; + + leaf route-tag { + type int32 { + range "0|1..255"; + } + default "0"; + description "Route tag used on export policies to match MAC/IP routes generated by proxy-ARP or proxy-ND module"; + } + + container flood { + description "Enter the flood context"; + + leaf unknown-arp-req { + type boolean; + default "true"; + description "Flood ARP-requests (with source squelching) if there is no active proxy-ARP entry for requested IP"; + } + + leaf gratuitous-arp { + type boolean; + default "true"; + description "Flood GARP-requests/GARP-replies to the EVPN"; + } + + } // container flood + + } // container evpn + + container duplicate-detect { + description "Enter the duplicate-detect context"; + + leaf anti-spoof-mac { + type types-sros:mac-unicast-address-no-zero; + description "MAC address to replace the proxy-ARP/ND offending entry's MAC"; + } + + leaf window { + type int32 { + range "1..15"; + } + units "minutes"; + default "3"; + description "Time to monitor the MAC address in the anti-spoofing mechanism"; + } + + leaf num-moves { + type int32 { + range "3..10"; + } + default "5"; + description "Number of moves required to declare a duplicate entry"; + } + + leaf hold-down-time { + type union { + type uint32 { + range "2..60"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "minutes"; + default "9"; + description "Hold down time for a duplicate entry"; + } + + leaf static-blackhole { + type boolean; + default "false"; + description "Consider anti-spoof MAC as black-hole static MAC in FDB"; + } + + } // container duplicate-detect + + container static-arp { + description "Enter the static-arp context"; + + list ip-address { + key "ipv4-address"; + description "Enter the ip-address context"; + + leaf ipv4-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "Proxy ARP IP address"; + } + + leaf mac { + type types-sros:mac-unicast-address-no-zero; + mandatory true; + description "Proxy ARP MAC address for static entry"; + } + + } // list ip-address + + } // container static-arp + + container dynamic-arp { + description "Enter the dynamic-arp context"; + + list ip-address { + key "ipv4-address"; + description "Enter the ip-address context"; + + leaf ipv4-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "Proxy ARP IP address"; + } + + leaf mac-list { + type types-sros:named-item; + description "MAC list for the dynamic entry"; + } + + leaf resolve-retry-time { + type int32 { + range "1..60"; + } + units "minutes"; + default "5"; + description "Frequency at which the resolve messages are sent"; + } + + } // list ip-address + + } // container dynamic-arp + + } // container proxy-arp + + container proxy-nd { + presence "Enable proxy nd configuration information."; + description "Enter the proxy-nd context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the proxy"; + } + + leaf dynamic-populate { + type boolean; + default "false"; + description "Populate proxy ARP entries from snooped GARP/ARP/ND messages on SAPs/SDP-bindings"; + } + + leaf age-time { + type union { + type int32 { + range "60..86400"; + } + type enumeration { + enum "never" { value 0; } + } + } + units "seconds"; + default "never"; + description "Aging timer for proxy entries, where entries are flushed upon timer expiry"; + } + + leaf send-refresh { + type union { + type int32 { + range "120..86400"; + } + type enumeration { + enum "never" { value 0; } + } + } + default "never"; + description "Time at which to send a refresh message"; + } + + leaf table-size { + type int32 { + range "1..16383"; + } + default "250"; + description "Maximum number of learned and static entries allowed in the proxy table of this service"; + } + + container evpn { + description "Enter the evpn context"; + + leaf route-tag { + type int32 { + range "0|1..255"; + } + default "0"; + description "Route tag used on export policies to match MAC/IP routes generated by proxy-ARP or proxy-ND module"; + } + + leaf advertise-neighbor-type { + type enumeration { + enum "router" { value 1; } + enum "host" { value 2; } + } + default "router"; + description "Advertisement type of static or dynamic entries in the EVPN"; + } + + container flood { + description "Enter the flood context"; + + leaf unknown-neighbor-solicitation { + type boolean; + default "true"; + description "Flood unsolicited Neighbor Solicitation messages (with source squelching) into EVPN network"; + } + + leaf unknown-neighbor-advertise-router { + type boolean; + default "true"; + description "Flood router unsolicited Neighbor Advertisement (NA) replies to EVPN"; + } + + leaf unknown-neighbor-advertise-host { + type boolean; + default "true"; + description "Flood host unsolicited Neighbor Advertisement (NA) replies to EVPN"; + } + + } // container flood + + } // container evpn + + container duplicate-detect { + description "Enter the duplicate-detect context"; + + leaf anti-spoof-mac { + type types-sros:mac-unicast-address-no-zero; + description "MAC address to replace the proxy-ARP/ND offending entry's MAC"; + } + + leaf window { + type int32 { + range "1..15"; + } + units "minutes"; + default "3"; + description "Time to monitor the MAC address in the anti-spoofing mechanism"; + } + + leaf num-moves { + type int32 { + range "3..10"; + } + default "5"; + description "Number of moves required to declare a duplicate entry"; + } + + leaf hold-down-time { + type union { + type uint32 { + range "2..60"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "minutes"; + default "9"; + description "Hold down time for a duplicate entry"; + } + + leaf static-blackhole { + type boolean; + default "false"; + description "Consider anti-spoof MAC as black-hole static MAC in FDB"; + } + + } // container duplicate-detect + + container static-neighbor { + description "Enter the static-neighbor context"; + + list ip-address { + key "ipv6-address"; + description "Enter the ip-address context"; + + leaf ipv6-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-unicast-address; + } + description "Proxy ND IP address"; + } + + leaf mac { + type types-sros:mac-unicast-address-no-zero; + mandatory true; + description "Proxy ARP MAC address for static entry"; + } + + leaf type { + type enumeration { + enum "host" { value 0; } + enum "router" { value 1; } + } + default "router"; + description "Entry type"; + } + + } // list ip-address + + } // container static-neighbor + + container dynamic-neighbor { + description "Enter the dynamic-neighbor context"; + + list ip-address { + key "ipv6-address"; + description "Enter the ip-address context"; + + leaf ipv6-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-unicast-address; + } + description "Proxy ND IP address"; + } + + leaf mac-list { + type types-sros:named-item; + description "MAC list for the dynamic entry"; + } + + leaf resolve-retry-time { + type int32 { + range "1..60"; + } + units "minutes"; + default "5"; + description "Frequency at which the resolve messages are sent"; + } + + } // list ip-address + + } // container dynamic-neighbor + + } // container proxy-nd + + container routed-vpls { + presence "Enable to allow IP interface binding information."; + description "Enter the routed-vpls context"; + + leaf vxlan-ipv4-tep-ecmp { + type boolean; + default "false"; + description "Use ECMP on VXLAN IPv4 destinations for R-VPLS services"; + } + + container multicast { + description "Enter the multicast context"; + + container ipv4 { + description "Enter the ipv4 context"; + + leaf forward-to-ip-interface { + type boolean; + default "false"; + description "Forward IPv4 multicast from RVPLS to L3 interface"; + } + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "VPLS L3 interface as a multicast router port"; + } + + } // container igmp-snooping + + } // container ipv4 + + container ipv6 { + description "Enter the ipv6 context"; + + leaf forward-to-ip-interface { + type boolean; + default "false"; + description "Forward IPv6 multicast from RVPLS to L3 interface"; + } + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "VPLS L3 interface as a multicast router port"; + } + + } // container mld-snooping + + } // container ipv6 + + } // container multicast + + } // container routed-vpls + + container load-balancing { + description "Enter the load-balancing context"; + + leaf per-service-hashing { + type boolean; + default "false"; + description "Enable/disable per service hashing."; + } + + leaf spi-load-balancing { + type boolean; + default "false"; + description "Allow use of SPI (Security Parameter Index) in hashing for ESP/AH encrypted IPv4/IPv6 traffic"; + } + + leaf teid-load-balancing { + type boolean; + default "false"; + description "Include TEID in hashing algorithm for GTP-U/C encapsulated traffic"; + } + + } // container load-balancing + + container pbb { + description "Enter the pbb context"; + + leaf force-qtag-forwarding { + type boolean; + default "false"; + description "Enable 802.1q tag forwarding"; + } + + list backbone-vpls { + key "backbone-vpls-service-name"; + max-elements 1; + description "Enter the backbone-vpls context"; + + leaf backbone-vpls-service-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:service-name; + } + description "Backbone VPLS service"; + } + + leaf isid { + type types-services:isid; + sros-ext:immutable; + mandatory true; + description "Backbone VPLS ISID"; + } + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + list mrouter-destination { + key "mac-reference"; + description "Enter the mrouter-destination context"; + + leaf mac-reference { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Mac name reference"; + } + + } // list mrouter-destination + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + list mrouter-destination { + key "mac-reference"; + description "Enter the mrouter-destination context"; + + leaf mac-reference { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Mac name reference"; + } + + } // list mrouter-destination + + } // container mld-snooping + + list sap { + key "sap-id"; + description "Enter the sap context"; + + leaf sap-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:sap; + } + description "Backbone VPLS SAP"; + } + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container mld-snooping + + } // list sap + + list spoke-sdp { + key "sdp-bind-id"; + description "Enter the spoke-sdp context"; + + leaf sdp-bind-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:sdp-bind-id; + } + description "Backbone VPLS SAP"; + } + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container mld-snooping + + } // list spoke-sdp + + list mesh-sdp { + key "sdp-bind-id"; + description "Enter the mesh-sdp context"; + + leaf sdp-bind-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:sdp-bind-id; + } + description "Backbone VPLS SAP"; + } + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + } // container mld-snooping + + } // list mesh-sdp + + } // list backbone-vpls + + container i-vpls-mac-flush { + description "Enter the i-vpls-mac-flush context"; + + container tldp { + description "Enter the tldp context"; + + leaf send-on-bvpls-failure { + type boolean; + default "false"; + description "Send flush-all-from-me on b-vpls failure"; + } + + leaf propagate-from-bvpls { + type boolean; + default "false"; + description "Propagate mac-flush from b-vpls into local i-vpls"; + } + + container send-to-bvpls { + description "Enter the send-to-bvpls context"; + + leaf all-from-me { + type boolean; + default "false"; + description "Generate LDP MAC withdraw all from me message to b-VPLS"; + } + + leaf all-but-mine { + type boolean; + default "false"; + description "Generate LDP MAC withdraw message to b-VPLS"; + } + + } // container send-to-bvpls + + } // container tldp + + container bgp-evpn { + description "Enter the bgp-evpn context"; + + leaf send-to-bvpls { + type boolean; + default "false"; + description "Send b-VPLS EVPN flush"; + } + + } // container bgp-evpn + + } // container i-vpls-mac-flush + + container source-bmac { + description "Enter the source-bmac context"; + + leaf address { + type types-sros:mac-unicast-address-no-zero; + description "Backbone source MAC address used for PBB"; + } + + leaf use-es-bmac-lsb { + type boolean; + default "false"; + description "Use ethernet segment backbone MAC LSB"; + } + + leaf use-mclag-bmac-lsb { + type boolean; + default "false"; + description "Use MC LAG backbone MAC LSB"; + } + + } // container source-bmac + + container mac-notification { + description "Enter the mac-notification context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of MAC notification"; + } + + leaf count { + type uint32 { + range "1..10"; + } + description "MAC notification messages count"; + } + + leaf interval { + type uint32 { + range "1..100"; + } + units "deciseconds"; + description "Interval for MAC notification messages"; + } + + leaf renotify { + type union { + type uint32 { + range "240..840"; + } + type enumeration { + enum "none" { value 0; } + } + } + units "seconds"; + default "none"; + description "Re-notify interval for MAC-notification messages"; + } + + } // container mac-notification + + } // container pbb + + list bgp { + key "bgp-instance"; + description "Enter the bgp context"; + + leaf bgp-instance { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..2"; + } + } + description "BGP instance"; + } + + leaf route-distinguisher { + type types-services:vpn-route-distinguisher-or-auto-rd; + description "High-order 6 bytes that are used as string to compose VSI-ID for use in NLRI"; + } + + leaf-list vsi-import { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description "VSI import policies"; + } + + leaf-list vsi-export { + type types-sros:named-item-64; + max-elements 5; + ordered-by user; + description "VSI export policies"; + } + + container route-target { + description "Enter the route-target context"; + + leaf export { + type types-services:route-target; + description "Extended community name for default import policy"; + } + + leaf import { + type types-services:route-target; + description "Extended community name for default import policy"; + } + + } // container route-target + + list pw-template-binding { + key "pw-template-name"; + max-elements 100; + description "Enter the pw-template-binding context"; + + leaf pw-template-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:pw-template-name; + } + description "PW template policy name"; + } + + leaf split-horizon-group { + type types-sros:named-item; + description "Split horizon group"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template name for PW-Template binding"; + } + + leaf bfd-liveness { + type boolean; + default "false"; + description "Enable BFD"; + } + + leaf-list import-rt { + type types-services:route-target; + max-elements 5; + description "Import route-target communities"; + } + + choice oper-group-association { + case oper-group { + + leaf oper-group { + type types-sros:named-item; + description "Operational group"; + } + + } + case monitor-oper-group { + + leaf monitor-oper-group { + type types-sros:named-item; + description "Oerational group to monitor"; + } + + } + } + } // list pw-template-binding + + } // list bgp + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of IGMP snooping"; + } + + leaf query-interval { + type types-sros:time-duration { + range "1..65535"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf robust-count { + type uint32 { + range "1..255"; + } + default "2"; + description "Robustness variable"; + } + + leaf report-source-address { + type types-sros:ipv4-address; + description "Source address used when generating IGMP reports."; + } + + leaf query-source-address { + type union { + type enumeration { + enum "system" { value 1; } + } + type types-sros:ipv4-address; + } + default "system"; + description "Source address for IGMP queries"; + } + + container mvr { + description "Enter the mvr context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of MVR"; + } + + leaf group-policy { + type types-sros:named-item; + description "Policy that applies MVR"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + } // container mvr + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of IGMP snooping"; + } + + leaf query-interval { + type types-sros:time-duration { + range "1..65535"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf robust-count { + type uint32 { + range "1..255"; + } + default "2"; + description "Robustness variable"; + } + + leaf report-source-address { + type types-sros:ipv6-address; + description "Source address used when generating MLD reports."; + } + + leaf query-source-address { + type union { + type enumeration { + enum "system" { value 1; } + } + type types-sros:ipv6-address; + } + default "system"; + description "Source address used when generating MLD queries."; + } + + container mvr { + description "Enter the mvr context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of MVR"; + } + + leaf group-policy { + type types-sros:named-item; + description "Policy that applies MVR"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + } // container mvr + + } // container mld-snooping + + container pim-snooping { + presence "Enable PIM on this service."; + description "Enter the pim-snooping context"; + + leaf hold-time { + type uint32 { + range "0..300"; + } + units "seconds"; + default "90"; + description "Duration that allows the PIM-snooping switch to snoop all the PIM states in the VPLS"; + } + + leaf-list group-policy { + type types-sros:display-string; + max-elements 5; + ordered-by user; + description "Group policy name"; + } + + container ipv4 { + description "Enter the ipv4 context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of snooping"; + } + + } // container ipv4 + + container ipv6 { + description "Enter the ipv6 context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of snooping"; + } + + } // container ipv6 + + } // container pim-snooping + + container bgp-ad { + presence "Enable BGP AD information."; + description "Enter the bgp-ad context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of BGP AD"; + } + + leaf vpls-id { + type types-services:vpls-id; + description "VPLS identifier as a 8-byte route distinguisher"; + } + + leaf vsi-id-prefix { + type types-sros:ipv4-address; + description "VSI prefix value"; + } + + } // container bgp-ad + + container bgp-evpn { + presence "Enable BGP EVPN information."; + description "Enter the bgp-evpn context"; + + leaf accept-ivpls-evpn-flush { + type boolean; + default "false"; + description "Accept non-zero ethernet-tag MAC routes and process for CMAC flushing"; + } + + leaf evi { + type types-services:evi; + description "EVPN ID"; + } + + leaf incl-mcast-orig-ip { + type types-sros:ipv4-unicast-address; + description "Originating IP address"; + } + + container routes { + description "Enter the routes context"; + + container mac-ip { + description "Enter the mac-ip context"; + + leaf advertise { + type boolean; + default "true"; + description "Status for the BGP-EVPN MAC/IP routes advertisement"; + } + + leaf cfm-mac { + type boolean; + default "false"; + description + "Enable/disable the advertisement of MEP, MIP, and VMEP + MAC addresses over the BGP EVPN."; + } + + leaf unknown-mac { + type boolean; + default "false"; + description + "Enable/disable the advertisement of MEP, MIP, and VMEP + MAC addresses over the BGP EVPN."; + } + + } // container mac-ip + + container ip-prefix { + description "Enter the ip-prefix context"; + + leaf advertise { + type boolean; + default "false"; + description "Status for the IP prefix routes advertisement"; + } + + leaf include-direct-interface-host { + type boolean; + default "false"; + description "BGP EVPN IP route advertisement"; + } + + } // container ip-prefix + + container incl-mcast { + description "Enter the incl-mcast context"; + + leaf advertise-ingress-replication { + type boolean; + default "true"; + description "BGP EVPN IMET-IR route advertisement"; + } + + } // container incl-mcast + + } // container routes + + container mac-duplication { + description "Enter the mac-duplication context"; + + leaf retry { + type union { + type uint32 { + range "2..60"; + } + type enumeration { + enum "never" { value 0; } + } + } + units "minutes"; + default "9"; + description "BGP EVPN MAC duplication retry"; + } + + leaf blackhole { + type boolean; + default "false"; + description "Enable black hole dup MAC configuration"; + } + + container detect { + description "Enter the detect context"; + + leaf num-moves { + type uint32 { + range "3..10"; + } + default "5"; + description "BGP EVPN MAC duplication detection number of moves"; + } + + leaf window { + type uint32 { + range "1..15"; + } + units "minutes"; + default "3"; + description "BGP EVPN MAC duplication detection window"; + } + + } // container detect + + } // container mac-duplication + + container isid-route-target { + description "Enter the isid-route-target context"; + + list range { + key "start"; + max-elements 8192; + description "Enter the range context"; + + leaf start { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:svc-isid-non-zero; + } + default "1"; + description "Starting value of the isid-range entry"; + } + + leaf end { + type types-sros:svc-isid-non-zero; + mandatory true; + description "Ending value of the isid-range entry"; + } + + leaf type { + type enumeration { + enum "auto" { value 1; } + enum "configured" { value 2; } + } + sros-ext:immutable; + default "auto"; + description "Method used to support the PBB-EVPN ISID-based route target advertisement"; + } + + leaf route-target { + type types-services:route-target; + sros-ext:immutable; + description "Route for the ISID range"; + } + + } // list range + + } // container isid-route-target + + list vxlan { + key "bgp-instance"; + description "Enter the vxlan context"; + + leaf bgp-instance { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..2"; + } + } + description "BGP instance"; + } + + leaf vxlan-instance { + type uint32 { + range "1..2"; + } + sros-ext:immutable; + mandatory true; + description "VXLAN instance"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of BGP EVPN VXLAN"; + } + + leaf send-tunnel-encap { + type boolean; + default "true"; + description "Enable/Disable sending Vxlan Encap."; + } + + leaf send-incl-mcast-ir-on-ndf { + type boolean; + default "true"; + description "Allow IMET-IR on NDF"; + } + + leaf default-route-tag { + type types-services:one-byte-value; + description "Default route tag to match against export policies: value as 0xXX."; + } + + leaf ecmp { + type types-services:ecmp-value; + default "1"; + description "Maximum ECMP routes information."; + } + + leaf mh-mode { + type enumeration { + enum "access" { value 0; } + enum "network" { value 1; } + } + default "access"; + description "Multi-homing mode"; + } + + container routes { + description "BGP-EVPN vxlan routes information"; + + container auto-disc { + description "BGP-EVPN vxlan routes auto-discovery information"; + + leaf advertise { + type boolean; + default "false"; + description "Route advertise on auto discovery"; + } + + } // container auto-disc + + } // container routes + + } // list vxlan + + list mpls { + key "bgp-instance"; + description "Enter the mpls context"; + + leaf bgp-instance { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type int32 { + range "1..2"; + } + } + description "BGP instance"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of BGP EVPN MPLS"; + } + + leaf force-vc-forwarding { + type types-services:bgp-evpn-force-vc-forwarding; + description "Forces vlan-vc-type forwarding in the data-path."; + } + + leaf control-word { + type boolean; + default "false"; + description "Enable/disable setting the CW bit in the label message."; + } + + leaf split-horizon-group { + type types-sros:named-item; + description "Split horizon group"; + } + + leaf ingress-replication-bum-label { + type boolean; + default "false"; + description "Use the same label as the one advertised for unicast traffic"; + } + + leaf ecmp { + type types-services:ecmp-value; + default "1"; + description "Maximum ECMP routes information"; + } + + leaf entropy-label { + type boolean; + default "false"; + description "Enable/disable use of entropy-label."; + } + + leaf default-route-tag { + type types-services:one-byte-value; + description "Default route tag to match against export policies: value as 0xXX."; + } + + container send-tunnel-encap { + description "Enter the send-tunnel-encap context"; + + leaf mpls { + type boolean; + default "true"; + description "Enable/disable MPLS encapsulation for this service."; + } + + leaf mpls-over-udp { + type boolean; + default "false"; + description "Enable/disable MPLS over UDP encapsulation for this service."; + } + + } // container send-tunnel-encap + + container auto-bind-tunnel { + description "Enter the auto-bind-tunnel context"; + + leaf resolution { + type types-services:resolve-status; + default "none"; + description "Resolution method for tunnel selection"; + } + + leaf enforce-strict-tunnel-tagging { + type boolean; + default "false"; + description "Enable/disable enforcement of strict tunnel tagging"; + } + + container resolution-filter { + description "Enter the resolution-filter context"; + + leaf bgp { + type boolean; + default "false"; + description "Set BGP type for auto bind tunnel"; + } + + leaf ldp { + type boolean; + default "false"; + description "Enable/disable setting LDP type for auto-bind-tunnel"; + } + + leaf rsvp { + type boolean; + default "false"; + description "Enable/disable setting RSVP-TE type for auto-bind-tunnel"; + } + + leaf sr-isis { + type boolean; + default "false"; + description "Enable/disable setting SR-ISIS type for auto-bind-tunnel"; + } + + leaf sr-ospf { + type boolean; + default "false"; + description "Segment Routing (SR) tunnel type programed by an OSPF instance in TTM"; + } + + leaf sr-te { + type boolean; + default "false"; + description "Enable/disable setting SR-TE type for auto-bind-tunnel"; + } + + leaf udp { + type boolean; + default "false"; + description "Set UDP type for auto-bind-tunnel"; + } + + leaf mpls-fwd-policy { + type boolean; + default "false"; + description "Enable/disable setting MPLS Forwarding Policy for auto-bind-tunnel"; + } + + leaf sr-policy { + type boolean; + default "false"; + description "Enable/disable setting SR Policy type for auto-bind-tunnel"; + } + + leaf rib-api { + type boolean; + default "false"; + description "Enable/disable setting RIB API type for auto-bind-tunnel"; + } + + } // container resolution-filter + + } // container auto-bind-tunnel + + container fdb { + description "Enter the fdb context"; + + leaf protected-src-mac-violation-action { + type types-services:vxlan-protected-src-mac-violation-action; + description "Action when a relearn request for a protected MAC is received"; + } + + } // container fdb + + } // list mpls + + } // container bgp-evpn + + container bgp-vpls { + presence "Enable BGP-VPLS for the service."; + description "Enter the bgp-vpls context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the service"; + } + + leaf maximum-ve-id { + type types-services:ve-id; + description "Maximum vpls-edge id for BGP-VPLS"; + } + + container ve { + description "Enter the ve context"; + + leaf name { + type types-sros:named-item; + description "Name of VPLS edge."; + } + + leaf id { + type types-services:ve-id; + description "VPLS edge identifier"; + } + + } // container ve + + } // container bgp-vpls + + list endpoint { + key "name"; + max-elements 10; + description "Enter the endpoint context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Service endpoint name"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf revert-time { + type types-services:revert-time; + default "immediate"; + description "Time to wait before reverting back to the primary spoke-sdp defined on this service endpoint"; + } + + leaf ignore-standby-signaling { + type boolean; + default "false"; + description "Ignore standby-bit received from TLDP peers when performing internal tasks"; + } + + leaf suppress-standby-signaling { + type boolean; + default "true"; + description "Do not send pseudowire standby bit to TLDP peer when specified spoke SDP is selected as standby"; + } + + leaf block-on-mesh-failure { + type boolean; + default "false"; + description + "Whether operational status of spoke-SDPs in the + endpoint will be affected by the operational status of + associated mesh SDPs in this service."; + } + + container fdb { + description "Enter the fdb context"; + + leaf mac-pinning { + type boolean; + default "false"; + description "Activate MAC address pinning on this endpoint"; + } + + leaf maximum-mac-addresses { + type types-services:max-mac-addr; + description "Maximum learned and static entries for this end point"; + } + + leaf auto-learn-mac-protect { + type boolean; + default "false"; + description "Populate automatically MAC protect list with MAC addresses learned on SDP with this endpoint"; + } + + leaf protected-src-mac-violation-action { + type types-services:sdp-protected-src-mac-violation-action; + description "Action when a relearn request for a protected MAC is received on the SDP"; + } + + } // container fdb + + } // list endpoint + + list split-horizon-group { + key "shg-name"; + description "Enter the split-horizon-group context"; + + leaf shg-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for the service split-horizon-group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf residential { + type boolean; + sros-ext:immutable; + default "false"; + description "Define as a residential split horizon group"; + } + + container fdb { + description "Enter the fdb context"; + + container saps { + description "Enter the saps context"; + + leaf auto-learn-mac-protect { + type boolean; + default "false"; + description "Populate automatically MAC protect list with MAC addresses learned on SDP with split horizon group"; + } + + leaf protected-src-mac-violation-action { + type types-services:sap-protected-src-mac-violation-action; + description "Action to take whenever a relearn request for a protected MAC is received"; + } + + leaf discard-unprotected-dest-mac { + type boolean; + default "false"; + description "Enable/disable unprotected dest MAC restriction"; + } + + } // container saps + + } // container fdb + + } // list split-horizon-group + + container eth-cfm { + description "Enter the eth-cfm context"; + + list mep { + key "md-admin-name ma-admin-name mep-id"; + description "Enter the mep context"; + + leaf md-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique domain name"; + } + + leaf ma-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique association name"; + } + + leaf mep-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:mep-id-type; + } + description "Maintenance association end point identifier"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MEP"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf mac-address { + type types-sros:mac-unicast-address-no-zero; + description "MAC address for the MEP"; + } + + leaf install-mep { + type boolean; + default "false"; + description "Install MEP in the forwarding plane"; + } + + leaf low-priority-defect { + type types-eth-cfm:lowest-alarm-priority; + default "mac-rem-err-xcon"; + description "Lowest priority defect that is allowed to generate a fault alarm"; + } + + leaf ccm { + type boolean; + default "false"; + description "Generate CCM messages"; + } + + leaf ccm-ltm-priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of CCM and LTM messages transmitted by the MEP"; + } + + leaf ccm-padding-size { + type uint32 { + range "3..1500"; + } + description "Additional octets inserted into CCM PDU for data TLV padding"; + } + + leaf one-way-delay-threshold { + type uint32 { + range "0..600"; + } + units "seconds"; + default "3"; + description "Threshold for one way delay test"; + } + + container alarm-notification { + description "Enter the alarm-notification context"; + + leaf fng-alarm-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm"; + } + + leaf fng-reset-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm is reset"; + } + + } // container alarm-notification + + container eth-test { + presence "Enable/disable eth-test functionality on MEP."; + description "Enter the eth-test context"; + + leaf bit-error-threshold { + type uint32 { + range "0..11840"; + } + units "bit errors"; + default "1"; + description "Lowest priority defect threshold for the bit error trap to generate a fault alarm"; + } + + container test-pattern { + description "Enter the test-pattern context"; + + leaf pattern { + type enumeration { + enum "all-zeros" { value 0; } + enum "all-ones" { value 1; } + } + default "all-zeros"; + description "Test pattern for eth-test frames"; + } + + leaf crc-tlv { + type boolean; + default "false"; + description "Generate a CRC checksum"; + } + + } // container test-pattern + + } // container eth-test + + container grace { + description "Enter the grace context"; + + container eth-ed { + description "Enter the eth-ed context"; + + leaf max-rx-defect-window { + type uint32 { + range "1..86400"; + } + units "seconds"; + description "Value to compare to received peer value, lower is used as maximum ETH-ED expected defect window"; + } + + leaf priority { + type int32 { + range "0..7"; + } + description "Transmission priority for ETH-ED PDUs"; + } + + leaf rx-eth-ed { + type boolean; + default "true"; + description "Receive and process ETH-ED PDUs"; + } + + leaf tx-eth-ed { + type boolean; + default "false"; + description "Transmit ETH-ED PDUs"; + } + + } // container eth-ed + + container eth-vsm-grace { + description "Enter the eth-vsm-grace context"; + + leaf rx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the reception and processing of the Nokia ETH-CFM Grace PDU on the MEP"; + } + + leaf tx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the transmission of the Nokia ETH-CFM Grace PDU from the MEP"; + } + + } // container eth-vsm-grace + + } // container grace + + } // list mep + + } // container eth-cfm + + container mcr-default-gtw { + description "Enter the mcr-default-gtw context"; + + leaf ip { + type types-sros:ipv4-unicast-address; + description "Multi-chassis ring default gateway IP address"; + } + + leaf mac { + type yang:mac-address; + default "00:00:00:00:00:00"; + description "Multi-chassis ring default gateway MAC address"; + } + + } // container mcr-default-gtw + + list spoke-sdp { + key "sdp-bind-id"; + description "Enter the spoke-sdp context"; + + leaf sdp-bind-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:sdp-bind-id; + } + description + "SDP Binding identifier as :. + sdp-id - [1..32767] + vc-id - [1..4294967295]."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of this Service SDP binding"; + } + + leaf vlan-vc-tag { + type types-services:vlan-vc-tag; + description "SDP bind VC tag"; + } + + leaf split-horizon-group { + type types-sros:named-item; + sros-ext:immutable; + description "Name of the split horizon group where the spoke SDP bind belongs to"; + } + + leaf multicast-source { + type boolean; + sros-ext:immutable; + default "false"; + description "Enable/disable multicast-source on the spoke SDP Bind."; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Allow agent to collect accounting statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Policy to collect accounting statistics"; + } + + leaf control-word { + type boolean; + default "false"; + description "Use the control word as preferred"; + } + + leaf force-vc-forwarding { + type enumeration { + enum "vlan" { value 1; } + enum "qinq-c-tag-c-tag" { value 2; } + enum "qinq-s-tag-c-tag" { value 3; } + } + description "VC forwarding status"; + } + + leaf etree-root-leaf-tag { + type boolean; + sros-ext:immutable; + default "false"; + description "E-tree root leaf tag status"; + } + + leaf etree-leaf { + type boolean; + sros-ext:immutable; + default "false"; + description "Enable etree leaf access-circuit status"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template associated with SDP binding"; + } + + leaf vc-type { + type types-services:vpls-sdp-bind-vc-type; + default "ether"; + description "Type of virtual circuit (VC) associated with the SDP binding; VPLS not supported"; + } + + leaf bpdu-translation { + type types-services:bpdu-translation; + description "Bpdu translation."; + } + + leaf ignore-standby-signaling { + type boolean; + default "false"; + description "Ignore standby-bit received from TLDP peers when performing internal tasks"; + } + + leaf block-on-mesh-failure { + type boolean; + default "false"; + description "Enable blocking after all configured SDPs or endpoints are in operationally down state"; + } + + choice label { + case entropy { + + leaf entropy-label { + type empty; + description "Whether the use of entropy-label is enabled or not."; + } + + } + case hash { + + container hash-label { + presence "Enable use of hash-label."; + description "Enter the hash-label context"; + + leaf signal-capability { + type empty; + description "To signal the hash label capability to the remote PE."; + } + + } // container hash-label + + } + } + choice oper-group-association { + case oper-group { + + leaf oper-group { + type types-sros:named-item; + description "Operational group identifier"; + } + + } + case monitor-oper-group { + + leaf monitor-oper-group { + type types-sros:named-item; + description "Operational group identifier that affect the state of this SDP bind"; + } + + } + } + container ingress { + description "Enter the ingress context"; + + leaf vc-label { + type types-services:ingress-vc-label; + description "Static MPLS VC label used by the far end device to send packets through this SDP"; + } + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter ID"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container qos { + description "Enter the qos context"; + + container network { + description "Enter the network context"; + + leaf policy-name { + type types-qos:network-policy-name; + description "Ingress network policy name applied to this SDP binding"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Forwarding-plane queue group policy for this SDP binding"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Instance of the forwarding-plane ingress Queue Group for this SDP binding"; + } + + } // container fp-redirect-group + + } // container network + + } // container qos + + } // container ingress + + container egress { + description "Enter the egress context"; + + leaf vc-label { + type types-services:egress-vc-label; + description "Static MPLS VC label that is used to send packets to the far end device through this SDP"; + } + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter ID"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container qos { + description "Enter the qos context"; + + container network { + description "Enter the network context"; + + leaf policy-name { + type types-qos:network-policy-name; + description "Egress network policy name applied to this SDP binding"; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Policy for port queue group for this SDP binding"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description + "Instance of the port egress Queue Group for this SDP + binding."; + } + + } // container port-redirect-group + + } // container network + + } // container qos + + container mfib-allowed-mda-destinations { + description "Enter the mfib-allowed-mda-destinations context"; + + list mda { + key "mda-id"; + description "Enter the mda context"; + + leaf mda-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-isa:slot-mda; + } + description "MFIB allowed MDA destination"; + } + + } // list mda + + } // container mfib-allowed-mda-destinations + + } // container egress + + container endpoint { + description "Enter the endpoint context"; + + leaf name { + type types-sros:named-item; + description "Name of endpoint to which this SDP bind is attached."; + } + + leaf precedence { + type types-services:sdp-precedence; + default "4"; + description "Precedence of this SDP bind when there are multiple SDP binds attached to one service endpoint"; + } + + } // container endpoint + + container cpu-protection { + description "Enter the cpu-protection context"; + + leaf policy-id { + type types-services:cpm-prot-policy-id; + default "255"; + description "CPM protection policy"; + } + + choice monitoring { + case mac { + + leaf mac-monitoring { + type empty; + description "Monitor MAC for CPU protection"; + } + + } + case cfm { + + container eth-cfm-monitoring { + presence "Enable ETH CFM monitoring configuration."; + description "Enter the eth-cfm-monitoring context"; + + leaf aggregate { + type empty; + description "Apply rate limit to the sum of the per peer packet rates"; + } + + leaf car { + type empty; + description "Eth-CFM packets to be ignored when enforcing overall rate"; + } + + } // container eth-cfm-monitoring + + } + } + } // container cpu-protection + + container pw-status { + description "Enter the pw-status context"; + + leaf signaling { + type boolean; + default "true"; + description "Whether this SDP binding supports pseudowire status signaling."; + } + + } // container pw-status + + container bfd-liveness { + presence "Enable BFD liveness information."; + description "Enter the bfd-liveness context"; + + leaf encap { + type types-services:bfd-encap; + default "ipv4"; + description "BFD encapsulation used on this SDP binding"; + } + + } // container bfd-liveness + + container i-vpls-mac-flush { + description "Enter the i-vpls-mac-flush context"; + + container bgp-evpn { + description "Enter the bgp-evpn context"; + + leaf send-to-bvpls { + type boolean; + default "true"; + description "Send B-VPLS EVPN flush"; + } + + } // container bgp-evpn + + } // container i-vpls-mac-flush + + container fdb { + description "Enter the fdb context"; + + leaf limit-mac-move { + type types-services:limit-mac-move; + default "blockable"; + description "MAC move"; + } + + leaf discard-unknown-source { + type boolean; + default "false"; + description "Discard packets with unknown destination MAC addresses"; + } + + leaf mac-pinning { + type boolean; + default "false"; + description "MAC address pinning in active status"; + } + + leaf maximum-mac-addresses { + type types-services:max-mac-addr; + description "Maximum MAC entries in the FDB from this SDP"; + } + + leaf auto-learn-mac-protect { + type boolean; + default "false"; + description "Populate automatically MAC protect list with source MAC addresses learned on SDP"; + } + + leaf protected-src-mac-violation-action { + type types-services:sdp-protected-src-mac-violation-action; + description "Action when a relearn request for a protected MAC is received on the SDP"; + } + + container mac-learning { + description "Enter the mac-learning context"; + + leaf learning { + type boolean; + default "true"; + description "Enable learning of new MAC addresses"; + } + + leaf aging { + type boolean; + default "true"; + description "Enable aging of MAC addresses"; + } + + } // container mac-learning + + } // container fdb + + container stp { + description "Enter the stp context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Enable/disable spanning-tree-protocol"; + } + + leaf auto-edge { + type boolean; + default "true"; + description "Enable/disable automatic detection of edge-port."; + } + + leaf edge-port { + type boolean; + default "false"; + description "Configure as edge-port."; + } + + leaf link-type { + type types-services:stp-link-type; + default "pt-pt"; + description "Configure STP link-type"; + } + + leaf path-cost { + type types-services:stp-path-cost; + default "10"; + description "Configure path-cost"; + } + + leaf priority { + type int32 { + range "0..255"; + } + default "128"; + description "Configure STP priority"; + } + + leaf root-guard { + type boolean; + default "false"; + description "Enable/disable STP root-guard"; + } + + leaf port-num { + type types-services:stp-port-num; + description "Configure virtual port number"; + } + + } // container stp + + container l2pt { + description "Enter the l2pt context"; + + container termination { + presence "Enable L2PT termination on managed VLANs"; + description "Enter the termination context"; + + container protocols { + description "Enter the protocols context"; + + leaf stp { + type boolean; + default "true"; + description "Enable/disable spanning tree protocols stp/mstp/pvst/rstp."; + } + + leaf cdp { + type boolean; + default "false"; + description "Enable Cisco discovery protocol"; + } + + leaf vtp { + type boolean; + default "false"; + description "Enable/disable virtual trunk protocol."; + } + + leaf dtp { + type boolean; + default "false"; + description "Enable dynamic trunking protocol"; + } + + leaf pagp { + type boolean; + default "false"; + description "Enable/disable port aggregation protocol."; + } + + leaf udld { + type boolean; + default "false"; + description "Enable/disable unidirectional link detection."; + } + + } // container protocols + + } // container termination + + } // container l2pt + + container dhcp { + description "Enter the dhcp context"; + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf snoop { + type boolean; + default "false"; + description "Allow DHCP snooping of DHCP messages on the SAP or SDP"; + } + + } // container dhcp + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf maximum-number-sources { + type uint32 { + range "1..1000"; + } + description "Maximum sources that are allowed per group"; + } + + leaf maximum-number-group-sources { + type uint32 { + range "1..32000"; + } + description "Maximum group source combinations"; + } + + leaf version { + type types-igmp:igmp-version; + default "3"; + description "IGMP protocol version"; + } + + container mcac { + description "Enter the mcac context"; + + leaf interface-policy { + type string { + length "1..32"; + } + description "Name for multicast CAC interface policy"; + } + + leaf policy { + type string { + length "1..32"; + } + description "Multicast CAC policy name"; + } + + container bandwidth { + description "Enter the bandwidth context"; + + leaf total { + type types-mcast-cac:bandwidth-limit; + description "Maximum allowed bandwidth."; + } + + leaf mandatory { + type types-mcast-cac:bandwidth-limit; + description "Pre-reserved bandwidth for all mandatory channels."; + } + + } // container bandwidth + + } // container mcac + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf version { + type types-igmp:mld-version; + default "2"; + description "MLD protocol version."; + } + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container mld-snooping + + container pim-snooping { + description "Enter the pim-snooping context"; + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups for this interface"; + } + + } // container pim-snooping + + container eth-cfm { + description "Enter the eth-cfm context"; + + leaf collect-lmm-stats { + type boolean; + default "false"; + description "Collect statistics for OAM-PM Loss Measurement Message (LMM) tests"; + } + + leaf-list squelch-ingress-levels { + type uint32 { + range "0..7"; + } + max-elements 8; + description "ETH-CFM PDUs to be silently discarded"; + } + + leaf vmep-filter { + type boolean; + default "false"; + description "Suppress eth-cfm PDUs based on level lower than or equal to configured Virtual MEP"; + } + + container collect-lmm-fc-stats { + description "Enter the collect-lmm-fc-stats context"; + + leaf-list fc { + type types-eth-cfm:fc-type; + max-elements 8; + description "Forwarding class name for which to create an individual profile-unaware counter"; + } + + leaf-list fc-in-profile { + type types-eth-cfm:fc-type; + max-elements 8; + description "Individual counters to create for the specified Forwarding Class"; + } + + } // container collect-lmm-fc-stats + + list mep { + key "md-admin-name ma-admin-name mep-id"; + description "Enter the mep context"; + + leaf md-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique domain name"; + } + + leaf ma-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique association name"; + } + + leaf mep-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:mep-id-type; + } + description "Maintenance association end point identifier"; + } + + leaf primary-vlan { + type boolean; + sros-ext:immutable; + default "false"; + description "MEP provisioned using MA primary VLAN ID"; + } + + leaf direction { + type types-eth-cfm:mp-direction; + sros-ext:immutable; + description "Direction the MEP faces"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MEP"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf mac-address { + type types-sros:mac-unicast-address-no-zero; + description "MAC address for the MEP"; + } + + leaf install-mep { + type boolean; + default "false"; + description "Install MEP in the forwarding plane"; + } + + leaf low-priority-defect { + type types-eth-cfm:lowest-alarm-priority; + default "mac-rem-err-xcon"; + description "Lowest priority defect that is allowed to generate a fault alarm"; + } + + leaf fault-propagation { + type types-eth-cfm:fault-propagation-type; + description "Fault propagation for the MEP"; + } + + leaf ccm { + type boolean; + default "false"; + description "Generate CCM messages"; + } + + leaf ccm-ltm-priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of CCM and LTM messages transmitted by the MEP"; + } + + leaf ccm-padding-size { + type uint32 { + range "3..1500"; + } + description "Additional octets inserted into CCM PDU for data TLV padding"; + } + + leaf lbm-svc-act-responder { + type boolean; + default "false"; + description "Process service activation streams encapsulated in ETH-CFM request Loopback Message"; + } + + leaf one-way-delay-threshold { + type uint32 { + range "0..600"; + } + units "seconds"; + default "3"; + description "Threshold for one way delay test"; + } + + container alarm-notification { + description "Enter the alarm-notification context"; + + leaf fng-alarm-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "The Fault Notification Generation (FNG) alarm time."; + } + + leaf fng-reset-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm is reset"; + } + + } // container alarm-notification + + container ais { + presence + "The generation and reception of Alarm Indication Signal (AIS) + message parameters"; + description "Enter the ais context"; + + leaf-list client-meg-level { + type uint32 { + range "1..7"; + } + max-elements 7; + description "Client MEG level for AIS message generation"; + } + + leaf interface-support { + type boolean; + default "false"; + description "Allow generation of AIS PDUs based on the associated endpoint state"; + } + + leaf interval { + type uint32 { + range "1|60"; + } + units "seconds"; + default "1"; + description "Transmission interval for AIS messages"; + } + + leaf low-priority-defect { + type enumeration { + enum "all-def" { value 1; } + enum "mac-rem-err-xcon" { value 2; } + } + default "all-def"; + description + "The Lowest Priority Defect for the MEP AIS generation. + + When this object is 'all-def (1)', AIS frame generation will be + triggered for any defect in the CCM state machine. + When this object is 'mac-rem-err-xcon (2)', AIS frame generation will be + triggered for 'def-mac-staus' defect and any defect higher than + 'def-mac-status'."; + } + + leaf priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of AIS messages originated by the node"; + } + + } // container ais + + container csf { + presence "The reception of Client Signal Fail (CSF) message parameters"; + description "Enter the csf context"; + + leaf multiplier { + type decimal64 { + range "0.0|2.0..30.0"; + fraction-digits 1; + } + default "3.5"; + description "Receive period multiplier to time out CSF"; + } + + } // container csf + + container eth-test { + presence "Enable/disable eth-test functionality on MEP."; + description "Enter the eth-test context"; + + leaf bit-error-threshold { + type uint32 { + range "0..11840"; + } + units "bit errors"; + default "1"; + description "Lowest priority defect threshold for the bit error trap to generate a fault alarm"; + } + + container test-pattern { + description "Enter the test-pattern context"; + + leaf pattern { + type enumeration { + enum "all-zeros" { value 0; } + enum "all-ones" { value 1; } + } + default "all-zeros"; + description "Test pattern for eth-test frames"; + } + + leaf crc-tlv { + type boolean; + default "false"; + description "Generate a CRC checksum"; + } + + } // container test-pattern + + } // container eth-test + + container grace { + description "Enter the grace context"; + + container eth-ed { + description "Enter the eth-ed context"; + + leaf max-rx-defect-window { + type uint32 { + range "1..86400"; + } + units "seconds"; + description "Value to compare to received peer value, lower is used as maximum ETH-ED expected defect window"; + } + + leaf priority { + type int32 { + range "0..7"; + } + description "Transmission priority for ETH-ED PDUs"; + } + + leaf rx-eth-ed { + type boolean; + default "true"; + description "Receive and process ETH-ED PDUs"; + } + + leaf tx-eth-ed { + type boolean; + default "false"; + description "Transmit ETH-ED PDUs"; + } + + } // container eth-ed + + container eth-vsm-grace { + description "Enter the eth-vsm-grace context"; + + leaf rx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the reception and processing of the Nokia ETH-CFM Grace PDU on the MEP"; + } + + leaf tx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the transmission of the Nokia ETH-CFM Grace PDU from the MEP"; + } + + } // container eth-vsm-grace + + } // container grace + + } // list mep + + } // container eth-cfm + + } // list spoke-sdp + + list mesh-sdp { + key "sdp-bind-id"; + description "Enter the mesh-sdp context"; + + leaf sdp-bind-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:sdp-bind-id; + } + description + "SDP Binding identifier as :. + sdp-id - [1..32767] + vc-id - [1..4294967295]."; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of this Service SDP binding"; + } + + leaf vlan-vc-tag { + type types-services:vlan-vc-tag; + description "SDP bind VC tag"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Allow agent to collect accounting statistics"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Policy to collect accounting statistics"; + } + + leaf control-word { + type boolean; + default "false"; + description "Use the control word as preferred"; + } + + leaf force-vc-forwarding { + type enumeration { + enum "vlan" { value 1; } + enum "qinq-c-tag-c-tag" { value 2; } + enum "qinq-s-tag-c-tag" { value 3; } + } + description "VC forwarding status"; + } + + leaf etree-root-leaf-tag { + type boolean; + sros-ext:immutable; + default "false"; + description "Status for E-tree root leaf tag"; + } + + leaf etree-leaf { + type boolean; + sros-ext:immutable; + default "false"; + description "Enable etree leaf access-circuit status"; + } + + leaf bfd-template { + type types-sros:named-item; + description "BFD template associated with SDP binding"; + } + + leaf vc-type { + type types-services:vpls-sdp-bind-vc-type; + default "ether"; + description "Type of virtual circuit (VC) associated with the SDP binding; VPLS not supported"; + } + + choice label { + case entropy { + + leaf entropy-label { + type empty; + description "Whether the use of entropy-label is enabled or not."; + } + + } + case hash { + + container hash-label { + presence "Enable use of hash-label."; + description "Enter the hash-label context"; + + leaf signal-capability { + type empty; + description "To signal the hash label capability to the remote PE."; + } + + } // container hash-label + + } + } + container ingress { + description "Enter the ingress context"; + + leaf vc-label { + type types-services:ingress-vc-label; + description "Static MPLS VC label used by the far end device to send packets through this SDP"; + } + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter ID"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container qos { + description "Enter the qos context"; + + container network { + description "Enter the network context"; + + leaf policy-name { + type types-qos:network-policy-name; + description "Ingress network policy name applied to this SDP binding"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Forwarding-plane queue group policy for this SDP binding"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Instance of the forwarding-plane ingress Queue Group for this SDP binding"; + } + + } // container fp-redirect-group + + } // container network + + } // container qos + + } // container ingress + + container egress { + description "Enter the egress context"; + + leaf vc-label { + type types-services:egress-vc-label; + description "Static MPLS VC label that is used to send packets to the far end device through this SDP"; + } + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter ID"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container qos { + description "Enter the qos context"; + + container network { + description "Enter the network context"; + + leaf policy-name { + type types-qos:network-policy-name; + description "Egress network policy name applied to this SDP binding"; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Policy for port queue group for this SDP binding"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description + "Instance of the port egress Queue Group for this SDP + binding."; + } + + } // container port-redirect-group + + } // container network + + } // container qos + + container mfib-allowed-mda-destinations { + description "Enter the mfib-allowed-mda-destinations context"; + + list mda { + key "mda-id"; + description "Enter the mda context"; + + leaf mda-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-isa:slot-mda; + } + description "MFIB allowed MDA destination"; + } + + } // list mda + + } // container mfib-allowed-mda-destinations + + } // container egress + + container cpu-protection { + description "Enter the cpu-protection context"; + + leaf policy-id { + type types-services:cpm-prot-policy-id; + default "255"; + description "CPM protection policy"; + } + + choice monitoring { + case mac { + + leaf mac-monitoring { + type empty; + description "Monitor MAC for CPU protection"; + } + + } + case cfm { + + container eth-cfm-monitoring { + presence "Enable ETH CFM monitoring configuration."; + description "Enter the eth-cfm-monitoring context"; + + leaf aggregate { + type empty; + description "Apply rate limit to the sum of the per peer packet rates"; + } + + leaf car { + type empty; + description "Eth-CFM packets to be ignored when enforcing overall rate"; + } + + } // container eth-cfm-monitoring + + } + } + } // container cpu-protection + + container bfd-liveness { + presence "Enable BFD liveness information."; + description "Enter the bfd-liveness context"; + + leaf encap { + type types-services:bfd-encap; + default "ipv4"; + description "BFD encapsulation used on this SDP binding"; + } + + } // container bfd-liveness + + container fdb { + description "Enter the fdb context"; + + leaf mac-pinning { + type boolean; + default "false"; + description "MAC address pinning in active status"; + } + + leaf auto-learn-mac-protect { + type boolean; + default "false"; + description "Enable/disable of automatic marking of MACs as protected"; + } + + leaf protected-src-mac-violation-action { + type types-services:sdp-protected-src-mac-violation-action; + description "Action to take whenever a relearn request for a protected MAC is received"; + } + + } // container fdb + + container dhcp { + description "Enter the dhcp context"; + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf snoop { + type boolean; + default "false"; + description "Allow DHCP snooping of DHCP messages on the SAP or SDP"; + } + + } // container dhcp + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf maximum-number-sources { + type uint32 { + range "1..1000"; + } + description "Maximum sources that are allowed per group"; + } + + leaf maximum-number-group-sources { + type uint32 { + range "1..32000"; + } + description "Maximum group source combinations"; + } + + leaf version { + type types-igmp:igmp-version; + default "3"; + description "IGMP protocol version"; + } + + container mcac { + description "Enter the mcac context"; + + leaf interface-policy { + type string { + length "1..32"; + } + description "Name for multicast CAC interface policy"; + } + + leaf policy { + type string { + length "1..32"; + } + description "Multicast CAC policy name"; + } + + container bandwidth { + description "Enter the bandwidth context"; + + leaf total { + type types-mcast-cac:bandwidth-limit; + description "Maximum allowed bandwidth."; + } + + leaf mandatory { + type types-mcast-cac:bandwidth-limit; + description "Pre-reserved bandwidth for all mandatory channels."; + } + + } // container bandwidth + + } // container mcac + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf version { + type types-igmp:mld-version; + default "2"; + description "MLD protocol version."; + } + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container mld-snooping + + container eth-cfm { + description "Enter the eth-cfm context"; + + leaf collect-lmm-stats { + type boolean; + default "false"; + description "Collect statistics for OAM-PM Loss Measurement Message (LMM) tests"; + } + + leaf-list squelch-ingress-levels { + type uint32 { + range "0..7"; + } + max-elements 8; + description "ETH-CFM PDUs to be silently discarded"; + } + + leaf vmep-filter { + type boolean; + default "false"; + description "Suppress eth-cfm PDUs based on level lower than or equal to configured Virtual MEP"; + } + + container collect-lmm-fc-stats { + description "Enter the collect-lmm-fc-stats context"; + + leaf-list fc { + type types-eth-cfm:fc-type; + max-elements 8; + description "Forwarding class name for which to create an individual profile-unaware counter"; + } + + leaf-list fc-in-profile { + type types-eth-cfm:fc-type; + max-elements 8; + description "Individual counters to create for the specified Forwarding Class"; + } + + } // container collect-lmm-fc-stats + + list mep { + key "md-admin-name ma-admin-name mep-id"; + description "Enter the mep context"; + + leaf md-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique domain name"; + } + + leaf ma-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique association name"; + } + + leaf mep-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:mep-id-type; + } + description "Maintenance association end point identifier"; + } + + leaf primary-vlan { + type boolean; + sros-ext:immutable; + default "false"; + description "MEP provisioned using MA primary VLAN ID"; + } + + leaf direction { + type types-eth-cfm:mp-direction; + sros-ext:immutable; + description "Direction the MEP faces"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MEP"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf mac-address { + type types-sros:mac-unicast-address-no-zero; + description "MAC address for the MEP"; + } + + leaf install-mep { + type boolean; + default "false"; + description "Install MEP in the forwarding plane"; + } + + leaf low-priority-defect { + type types-eth-cfm:lowest-alarm-priority; + default "mac-rem-err-xcon"; + description "Lowest priority defect that is allowed to generate a fault alarm"; + } + + leaf fault-propagation { + type types-eth-cfm:fault-propagation-type; + description "Fault propagation for the MEP"; + } + + leaf ccm { + type boolean; + default "false"; + description "Generate CCM messages"; + } + + leaf ccm-ltm-priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of CCM and LTM messages transmitted by the MEP"; + } + + leaf ccm-padding-size { + type uint32 { + range "3..1500"; + } + description "Additional octets inserted into CCM PDU for data TLV padding"; + } + + leaf lbm-svc-act-responder { + type boolean; + default "false"; + description "Process service activation streams encapsulated in ETH-CFM request Loopback Message"; + } + + leaf one-way-delay-threshold { + type uint32 { + range "0..600"; + } + units "seconds"; + default "3"; + description "Threshold for one way delay test"; + } + + container alarm-notification { + description "Enter the alarm-notification context"; + + leaf fng-alarm-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm"; + } + + leaf fng-reset-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm is reset"; + } + + } // container alarm-notification + + container ais { + presence + "The generation and reception of Alarm Indication Signal (AIS) + message parameters"; + description "Enter the ais context"; + + leaf-list client-meg-level { + type uint32 { + range "1..7"; + } + max-elements 7; + description "Client MEG level for AIS message generation"; + } + + leaf interface-support { + type boolean; + default "false"; + description "Allow generation of AIS PDUs based on the associated endpoint state"; + } + + leaf interval { + type uint32 { + range "1|60"; + } + units "seconds"; + default "1"; + description "Transmission interval for AIS messages"; + } + + leaf low-priority-defect { + type enumeration { + enum "all-def" { value 1; } + enum "mac-rem-err-xcon" { value 2; } + } + default "all-def"; + description "Lowest priority defect for MEP AIS generation"; + } + + leaf priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of AIS messages originated by the node"; + } + + } // container ais + + container csf { + presence "The reception of Client Signal Fail (CSF) message parameters"; + description "Enter the csf context"; + + leaf multiplier { + type decimal64 { + range "0.0|2.0..30.0"; + fraction-digits 1; + } + default "3.5"; + description "Receive period multiplier to time out CSF"; + } + + } // container csf + + container eth-test { + presence "Enable/disable eth-test functionality on MEP."; + description "Enter the eth-test context"; + + leaf bit-error-threshold { + type uint32 { + range "0..11840"; + } + units "bit errors"; + default "1"; + description "Lowest priority defect threshold for the bit error trap to generate a fault alarm"; + } + + container test-pattern { + description "Enter the test-pattern context"; + + leaf pattern { + type enumeration { + enum "all-zeros" { value 0; } + enum "all-ones" { value 1; } + } + default "all-zeros"; + description "Test pattern for eth-test frames"; + } + + leaf crc-tlv { + type boolean; + default "false"; + description "Generate a CRC checksum"; + } + + } // container test-pattern + + } // container eth-test + + container grace { + description "Enter the grace context"; + + container eth-ed { + description "Enter the eth-ed context"; + + leaf max-rx-defect-window { + type uint32 { + range "1..86400"; + } + units "seconds"; + description "Value to compare to received peer value, lower is used as maximum ETH-ED expected defect window"; + } + + leaf priority { + type int32 { + range "0..7"; + } + description "Transmission priority for ETH-ED PDUs"; + } + + leaf rx-eth-ed { + type boolean; + default "true"; + description "Receive and process ETH-ED PDUs"; + } + + leaf tx-eth-ed { + type boolean; + default "false"; + description "Transmit ETH-ED PDUs"; + } + + } // container eth-ed + + container eth-vsm-grace { + description "Enter the eth-vsm-grace context"; + + leaf rx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the reception and processing of the Nokia ETH-CFM Grace PDU on the MEP"; + } + + leaf tx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the transmission of the Nokia ETH-CFM Grace PDU from the MEP"; + } + + } // container eth-vsm-grace + + } // container grace + + } // list mep + + } // container eth-cfm + + } // list mesh-sdp + + list bgp-mh-site { + key "site-name"; + description "Enter the bgp-mh-site context"; + + leaf site-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Name for the specific site"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the site"; + } + + leaf id { + type types-services:site-id; + description "ID for the site"; + } + + leaf boot-timer { + type types-services:site-boot-timer; + units "seconds"; + description "Time that system waits after node reboot and before it runs DF election algorithm"; + } + + leaf activation-timer { + type types-services:site-activation-timer; + units "seconds"; + description "Time that the local sites are in standby status, waiting for BGP updates"; + } + + leaf monitor-oper-group { + type types-sros:named-item; + description "Operational group to monitor"; + } + + leaf failed-threshold { + type types-services:failed-threshold; + default "all"; + description "Threshold for the site to be declared down"; + } + + leaf min-down-timer { + type types-services:site-min-down-timer; + units "seconds"; + description "Minimum downtime for BGP multi-homing site after transition from up to down"; + } + + choice site-object { + case spoke-sdp { + + leaf spoke-sdp { + type types-services:sdp-bind-id; + description "SDP to be associated with this site"; + } + + } + case sap { + + leaf sap { + type types-sros:sap; + description "SAP to be associated with this site"; + } + + } + case mesh-sdp { + + leaf mesh-sdp-binds { + type empty; + description "Specify if a mesh-sdp-binding is associated with this site"; + } + + } + case shg { + + leaf shg-name { + type types-sros:named-item; + description "Split horizon group to be associated with this site"; + } + + } + } + } // list bgp-mh-site + + list sap { + key "sap-id"; + description "Enter the sap context"; + + leaf sap-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:sap; + } + description "SAP identifier"; + } + + leaf description { + type types-sros:long-description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the SAP"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy"; + } + + leaf anti-spoof { + type types-services:anti-spoof-option; + description "Type of anti-spoof filtering"; + } + + leaf bandwidth { + type types-services:sap-bandwidth; + units "kilobps"; + description "SAP bandwidth"; + } + + leaf calling-station-id { + type types-sros:string-not-all-spaces { + length "1..64"; + } + description "Calling station ID"; + } + + leaf cflowd { + type boolean; + default "false"; + description "Enable Cflowd collection and analysis on this SAP"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect accounting statistics"; + } + + leaf dist-cpu-protection { + type types-sros:named-item; + description "Distributed CPU protection policy for SAP"; + } + + leaf host-admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of hosts"; + } + + leaf host-lockout-policy { + type types-sros:named-item; + description "Host lockout policy"; + } + + leaf multi-service-site { + type types-sros:named-item; + description "Multi service site name"; + } + + leaf split-horizon-group { + type types-sros:named-item; + sros-ext:immutable; + description "Split horizon group"; + } + + leaf multicast-source { + type boolean; + sros-ext:immutable; + default "false"; + description "Enable/disable multicast-source on the SAP."; + } + + leaf eth-ring { + type uint32 { + range "0..128"; + } + sros-ext:immutable; + description "Ethernet ring operation"; + } + + leaf etree-leaf { + type boolean; + sros-ext:immutable; + default "false"; + description "Enable etree leaf access-circuit status"; + } + + leaf arp-reply-agent { + type types-services:arp-reply-agent; + description "Enable arp-reply-agent function"; + } + + leaf bpdu-translation { + type types-services:bpdu-translation; + description "Bpdu translation on this SAP"; + } + + leaf process-cpm-traffic-on-sap-down { + type boolean; + default "false"; + description "Process CPM traffic on SAP down event"; + } + + leaf radius-auth-policy { + type types-sros:named-item; + description "RADIUS authentication policy"; + } + + leaf shcv-policy-ipv4 { + type types-sros:external-named-item; + description "Subscriber host connectivity verification policy for IPv4"; + } + + choice oper-group-association { + case oper-group { + + leaf oper-group { + type types-sros:named-item; + description "Operational group"; + } + + } + case monitor-oper-group { + + leaf monitor-oper-group { + type types-sros:named-item; + description "Monitor operational group"; + } + + } + } + container ingress { + description "Enter the ingress context"; + + container qos { + description "Enter the qos context"; + + leaf match-qinq-dot1p { + type enumeration { + enum "top" { value 2; } + enum "bottom" { value 3; } + } + description "Ingress match QinQ Dot1p"; + } + + container sap-ingress { + description "Enter the sap-ingress context"; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Policy identifier"; + } + + leaf queuing-type { + type types-services:services-sap-queuing-type; + description "Ingress queuing type"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Forwarding-plane queue group policy"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Queue group instance"; + } + + } // container fp-redirect-group + + container overrides { + description "Enter the overrides context"; + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-queue-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type uint32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobps"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf monitor-depth { + type boolean; + default "false"; + description "Monitor queue depth"; + } + + choice queue-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-services:sap-pir-rate-ovr; + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type types-services:sap-cir-rate-ovr; + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent-or-default-override; + description "Percentage reduction from the MBS for a queue drop tail"; + } + + } // container low + + } // container drop-tail + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight-override; + description "PIR parameter that overrides parent for queue group"; + } + + leaf cir-weight { + type types-qos:weight-override; + description "CIR parameter that overrides parent for queue group"; + } + + } // container parent + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf packet-byte-offset { + type types-qos:ingress-per-packet-offset-override; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + description "Mode of statistics collected by the policer"; + } + + choice policer-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + } // list policer + + } // container overrides + + } // container sap-ingress + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy name"; + } + + container overrides { + presence "Apply a policer control policy override."; + description "Enter the overrides context"; + + container root { + description "Enter the root context"; + + leaf max-rate { + type types-services:sap-max-rate-ovr; + description "Maximum frame-based bandwidth limit"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-thresh-separation { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of separation buffer space"; + } + + list priority { + key "priority-level"; + description "Enter the priority context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of cumulative buffer space allowed"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container root + + } // container overrides + + } // container policer-control-policy + + container scheduler-policy { + description "Enter the scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Scheduler policy name"; + } + + container overrides { + description "Enter the overrides context"; + + list scheduler { + key "scheduler-name"; + description "Enter the scheduler context"; + + leaf scheduler-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler override policy name"; + } + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-weight { + type types-qos:weight; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + description "Specifies the administrative PIR"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "sum" { value -3; } + enum "max" { value -1; } + } + } + description "Specifies the administrative CIR"; + } + + } // container rate + + } // list scheduler + + } // container overrides + + } // container scheduler-policy + + } // container qos + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter identifier"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter identifier"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container qtag-manipulation { + description "Enter the qtag-manipulation context"; + + choice tags { + case push-dot1q-vlan { + + leaf push-dot1q-vlan { + type types-services:qtag-manipulation-info; + description "VLAN translation information"; + } + + } + } + } // container qtag-manipulation + + } // container ingress + + container egress { + description "Enter the egress context"; + + leaf dest-mac-rewrite { + type types-sros:mac-unicast-address-no-zero; + description "Destination MAC overwrite for unicast"; + } + + container qos { + description "Enter the qos context"; + + leaf qinq-mark-top-only { + type boolean; + default "false"; + description "Mark top Q-tags"; + } + + container sap-egress { + description "Enter the sap-egress context"; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Policy identifier"; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Policy for port redirect queue group"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Instance of port queue group"; + } + + } // container port-redirect-group + + container overrides { + description "Enter the overrides context"; + + leaf hs-secondary-shaper { + type types-sros:named-item; + description "HS Secondary Shaper"; + } + + container hsmda-queues { + description "Enter the hsmda-queues context"; + + leaf secondary-shaper { + type types-sros:named-item; + description "Secondary shaper for the HSMDA queue"; + } + + leaf packet-byte-offset { + type types-services:egress-hsmda-queue-packet-byte-offset; + description "Packet byte offset for HSMDA queue"; + } + + leaf wrr-policy { + type types-sros:named-item; + description "WRR policy for the HSMDA queue"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress HSMDA queue ID"; + } + + leaf mbs { + type types-qos:hsmda-queue-burst-size-override; + units "bytes"; + description "Buffer space allowed for the queue"; + } + + leaf rate { + type types-qos:hsmda-queue-pir-rate-override; + description "Administrative PIR rate."; + } + + leaf slope-policy { + type types-sros:named-item; + description + "Name of the slope-policy which is used to override the + default slope-policy for the named buffer pool."; + } + + leaf wrr-weight { + type types-qos:hsmda-wrr-weight-override; + description "Weight value for the HSMDA queue"; + } + + } // list queue + + } // container hsmda-queues + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Policer unique ID"; + } + + leaf avg-frame-overhead { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description + "Encapsulation overhead, in centipercent, used to + translate packet-based rate to frame-based rate and vice versa."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "Explicit shaping burst size of a queue."; + } + + leaf cbs { + type union { + type uint32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + description "MBS"; + } + + leaf monitor-depth { + type boolean; + default "false"; + description "Monitor queue depth"; + } + + leaf hs-wrr-weight { + type types-qos:hs-wrr-weight-override; + default "1"; + description "Weighted Round Robin (WRR) weight to parent with this queue into the scheduler"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight-override; + description "Scheduling class weight."; + } + + choice queue-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-services:sap-pir-rate-ovr; + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type types-services:sap-cir-rate-ovr; + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent-or-default-override; + description "Percentage reduction from the MBS for a queue drop tail"; + } + + } // container low + + } // container drop-tail + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight-override; + description "PIR parameter that overrides parent for queue group"; + } + + leaf cir-weight { + type types-qos:weight-override; + description "CIR parameter that overrides parent for queue group"; + } + + } // container parent + + container hs-wred-queue { + description "Enter the hs-wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Name of slope-policy."; + } + + } // container hs-wred-queue + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:sap-egress-policer-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset-override; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type types-qos:egress-policer-stat-mode; + description "Mode of statistics collected by the policer"; + } + + choice policer-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + } // list policer + + list hs-wrr-group { + key "group-id"; + description "Enter the hs-wrr-group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hs-wrr-group-id; + } + description "HS WRR group identifier"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight-override; + description "Weight of scheduling class."; + } + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type union { + type uint32 { + range "1..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "Administrative PIR."; + } + + } + case percent-rate { + + leaf percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent."; + } + + } + } + } // list hs-wrr-group + + } // container overrides + + } // container sap-egress + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy name"; + } + + container overrides { + presence "Apply a policer control policy override."; + description "Enter the overrides context"; + + container root { + description "Enter the root context"; + + leaf max-rate { + type types-services:sap-max-rate-ovr; + description "Maximum frame-based bandwidth limit"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-thresh-separation { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of separation buffer space"; + } + + list priority { + key "priority-level"; + description "Enter the priority context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of cumulative buffer space allowed"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container root + + } // container overrides + + } // container policer-control-policy + + container scheduler-policy { + description "Enter the scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Scheduler policy name"; + } + + container overrides { + description "Enter the overrides context"; + + list scheduler { + key "scheduler-name"; + description "Enter the scheduler context"; + + leaf scheduler-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler override policy name"; + } + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-weight { + type types-qos:weight; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + description "Specifies the administrative PIR"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "sum" { value -3; } + enum "max" { value -1; } + } + } + description "Specifies the administrative CIR"; + } + + } // container rate + + } // list scheduler + + } // container overrides + + } // container scheduler-policy + + container vlan-qos-policy { + description "Attach an egress vlan-qos-policy."; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Egress vlan-qos-policy name"; + } + + } // container vlan-qos-policy + + container egress-remark-policy { + description "Attach an egress-remark-policy."; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Egress-remark-policy name"; + } + + } // container egress-remark-policy + + } // container qos + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter identifier"; + } + + leaf ip { + type types-filter:filter-name; + description "IP filter identifier"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container agg-rate { + description "Enter the agg-rate context"; + + leaf limit-unused-bandwidth { + type boolean; + default "false"; + description "Enable aggregate rate overrun protection"; + } + + leaf rate { + type types-services:agg-rate-rate; + description "Maximum total rate of all egress queues in kbps."; + } + + leaf queue-frame-based-accounting { + type boolean; + default "false"; + description "Enable frame-based accounting on all policers and queues associated with context"; + } + + leaf cir { + type union { + type int32 { + range "0..100000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "0"; + description "Specifies the administrative CIR."; + } + + } // container agg-rate + + } // container egress + + container cpu-protection { + description "Enter the cpu-protection context"; + + leaf policy-id { + type types-services:cpm-prot-policy-id; + description "CPM protection policy"; + } + + choice monitoring { + case mac { + + leaf mac-monitoring { + type empty; + description "Monitor MAC for CPU protection"; + } + + } + case cfm { + + container eth-cfm-monitoring { + presence "Enable ETH CFM monitoring configuration."; + description "Enter the eth-cfm-monitoring context"; + + leaf aggregate { + type empty; + description "Apply rate limit to the sum of the per peer packet rates"; + } + + leaf car { + type empty; + description "Eth-CFM packets to be ignored when enforcing overall rate"; + } + + } // container eth-cfm-monitoring + + } + } + } // container cpu-protection + + container lag { + description "Enter the lag context"; + + leaf link-map-profile { + type types-services:link-map-profile-id; + description "LAG link map profile applied to a SAP or network interface"; + } + + container per-link-hash { + description "Configure per-link-hash information."; + + leaf class { + type types-services:sap-lag-per-link-hash-class; + default "1"; + description "Configure per-link-hash class."; + } + + leaf weight { + type types-services:sap-lag-per-link-hash-weight; + default "1"; + description "Configure per-link-hash weight."; + } + + } // container per-link-hash + + } // container lag + + container etree-root-leaf-tag { + presence "Enable E-tree root leaf tag status."; + description "Enter the etree-root-leaf-tag context"; + + leaf leaf { + type int32 { + range "1..4094"; + } + sros-ext:immutable; + mandatory true; + description "Leaf tag value"; + } + + } // container etree-root-leaf-tag + + container igmp-host-tracking { + description "Enter the igmp-host-tracking context"; + + leaf expiry-time { + type types-sros:time-duration { + range "1..65535"; + } + units "seconds"; + description "Time during which the system continues to track inactive hosts"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum number of multicast groups to be tracked"; + } + + leaf maximum-number-group-sources { + type uint32 { + range "1..32000"; + } + description "Maximum number of multicast groups to be tracked per group"; + } + + leaf maximum-number-sources { + type uint32 { + range "1..1000"; + } + description "Maximum number of multicast sources to be tracked"; + } + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IGMP router alert check option"; + } + + } // container igmp-host-tracking + + container igmp-snooping { + description "Enter the igmp-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf maximum-number-sources { + type uint32 { + range "1..1000"; + } + description "Maximum sources that are allowed per group"; + } + + leaf maximum-number-group-sources { + type uint32 { + range "1..32000"; + } + description "Maximum group source combinations"; + } + + leaf version { + type types-igmp:igmp-version; + default "3"; + description "IGMP protocol version"; + } + + container mcac { + description "Enter the mcac context"; + + leaf interface-policy { + type string { + length "1..32"; + } + description "Name for multicast CAC interface policy"; + } + + leaf policy { + type string { + length "1..32"; + } + description "Multicast CAC policy name"; + } + + container mc-constraints { + description "Enter the mc-constraints context"; + + leaf use-lag-port-weight { + type boolean; + default "false"; + description "Use LAG port weight while calculating Multicast CAC constraints"; + } + + list level { + key "level-id"; + description "Enter the level context"; + + leaf level-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-mcast-cac:constraints-level; + } + description "Bandwidth level ID for a multicast CAC constraint"; + } + + leaf bandwidth { + type types-mcast-cac:bandwidth { + range "0..2147483647"; + } + mandatory true; + description "Bandwidth available for this level"; + } + + } // list level + + list number-down { + key "number-lag-port-down"; + description "Enter the number-down context"; + + leaf number-lag-port-down { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type uint32 { + range "1..64"; + } + } + description "Number of LAG ports down"; + } + + leaf level { + type types-mcast-cac:constraints-level; + mandatory true; + description "Level associated with the number of LAG ports that are down"; + } + + } // list number-down + + } // container mc-constraints + + container bandwidth { + description "Enter the bandwidth context"; + + leaf total { + type types-mcast-cac:bandwidth-limit; + description "Maximum allowed bandwidth."; + } + + leaf mandatory { + type types-mcast-cac:bandwidth-limit; + description "Pre-reserved bandwidth for all mandatory channels."; + } + + } // container bandwidth + + } // container mcac + + container mvr { + description "Enter the mvr context"; + + leaf from-vpls { + type types-services:service-name; + description "MVR VPLS from which the multicast channels are taken"; + } + + leaf to-sap { + type types-sros:sap; + description "Multicast channels copied to SAP"; + } + + } // container mvr + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container igmp-snooping + + container mld-snooping { + description "Enter the mld-snooping context"; + + leaf router-alert-check { + type boolean; + default "true"; + description "Enable IP router alert check option"; + } + + leaf import-policy { + type types-sros:named-item-64; + description "Import policy that filters IGMP packets"; + } + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups allowed"; + } + + leaf query-interval { + type uint32 { + range "2..1024"; + } + units "seconds"; + default "125"; + description "Time between two consecutive host-query messages"; + } + + leaf query-response-interval { + type uint32 { + range "1..1023"; + } + units "seconds"; + default "10"; + description "Time to wait for a response to the host-query messages"; + } + + leaf query-last-member-interval { + type uint32 { + range "1..50"; + } + units "deciseconds"; + default "10"; + description "Time between group-specific query messages"; + } + + leaf fast-leave { + type boolean; + default "false"; + description "Allow IGMP fast leave processing"; + } + + leaf mrouter-port { + type boolean; + default "false"; + description "Port as a multicast router port"; + } + + leaf robust-count { + type uint32 { + range "2..7"; + } + default "2"; + description "Number of retries to cope with message loss."; + } + + leaf send-queries { + type boolean; + default "false"; + description "Generate IGMP general queries"; + } + + leaf version { + type types-igmp:mld-version; + default "2"; + description "MLD protocol version."; + } + + container mvr { + description "Enter the mvr context"; + + leaf from-vpls { + type types-services:service-name; + description "MVR VPLS from which the multicast channels are taken"; + } + + leaf to-sap { + type types-sros:sap; + description "The SAP to which the multicast channels are copied"; + } + + } // container mvr + + container static { + description "Enter the static context"; + + list group { + key "group-address"; + description "Enter the group context"; + + leaf group-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-multicast-address; + } + description "Group address of multicast channel"; + } + + choice source-or-starg { + mandatory true; + case source { + + list source { + key "source-address"; + description "Enter the source context"; + + leaf source-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv6-unicast-address; + } + description "Source address of multicast channel."; + } + + } // list source + + } + case starg { + + leaf starg { + type empty; + description "any source address (*,G)"; + } + + } + } + } // list group + + } // container static + + } // container mld-snooping + + container pim-snooping { + description "Enter the pim-snooping context"; + + leaf maximum-number-groups { + type uint32 { + range "1..16000"; + } + description "Maximum groups for this interface"; + } + + } // container pim-snooping + + container stp { + description "Enter the stp context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Enable/disable spanning-tree-protocol"; + } + + leaf auto-edge { + type boolean; + default "true"; + description "Enable/disable automatic detection of edge-port."; + } + + leaf edge-port { + type boolean; + default "false"; + description "Configure as edge-port."; + } + + leaf link-type { + type types-services:stp-link-type; + default "pt-pt"; + description "Configure STP link-type"; + } + + leaf path-cost { + type types-services:stp-path-cost; + default "10"; + description "Configure path-cost"; + } + + leaf priority { + type int32 { + range "0..255"; + } + default "128"; + description "Configure STP priority"; + } + + leaf root-guard { + type boolean; + default "false"; + description "Enable/disable STP root-guard"; + } + + leaf port-num { + type types-services:stp-port-num; + description "Configure virtual port number"; + } + + } // container stp + + container l2pt { + description "Enter the l2pt context"; + + container termination { + presence "Enable L2PT termination on managed VLANs"; + description "Enter the termination context"; + + container protocols { + description "Enter the protocols context"; + + leaf stp { + type boolean; + default "true"; + description "Enable/disable spanning tree protocols stp/mstp/pvst/rstp."; + } + + leaf cdp { + type boolean; + default "false"; + description "Enable Cisco discovery protocol"; + } + + leaf vtp { + type boolean; + default "false"; + description "Enable/disable virtual trunk protocol."; + } + + leaf dtp { + type boolean; + default "false"; + description "Enable dynamic trunking protocol"; + } + + leaf pagp { + type boolean; + default "false"; + description "Enable/disable port aggregation protocol."; + } + + leaf udld { + type boolean; + default "false"; + description "Enable/disable unidirectional link detection."; + } + + } // container protocols + + } // container termination + + } // container l2pt + + container fdb { + description "Enter the fdb context"; + + leaf discard-unknown-source { + type boolean; + default "false"; + description "Discard frames with unknown source"; + } + + leaf limit-mac-move { + type types-services:limit-mac-move; + default "blockable"; + description "MAC move"; + } + + leaf mac-pinning { + type boolean; + default "false"; + description "Enable MAC address pinning on this SAP"; + } + + leaf maximum-mac-addresses { + type types-services:max-mac-addr; + description "Maximum number of MAC entries in the FDB"; + } + + leaf auto-learn-mac-protect { + type boolean; + default "false"; + description "Enable automatic update of MAC protect list"; + } + + leaf protected-src-mac-violation-action { + type types-services:sap-protected-src-mac-violation-action; + description "Action to take whenever a relearn request for a protected MAC is received"; + } + + leaf discard-unprotected-dest-mac { + type boolean; + default "false"; + description "Enable/disable unprotected dest MAC restriction"; + } + + container mac-learning { + description "Enter the mac-learning context"; + + leaf learning { + type boolean; + default "true"; + description "Enable learning of new MAC addresses"; + } + + leaf aging { + type boolean; + default "true"; + description "Enable aging of MAC addresses"; + } + + } // container mac-learning + + } // container fdb + + container l2tpv3-session { + presence "Enable L2TPv3 Session information."; + description "Enter the l2tpv3-session context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Adminstrative state of the entry."; + } + + leaf vc-id { + type types-services:vc-id; + description "VC identifier."; + } + + container pseudo-wire { + description "Enter the pseudo-wire context"; + + choice type { + case ethernet { + + leaf ethernet { + type empty; + description "Ethernet type."; + } + + } + case ethernet-vlan-id { + + leaf ethernet-vlan-id { + type int32 { + range "0..4095"; + } + description "Ethernet VLAN identifier."; + } + + } + } + } // container pseudo-wire + + container router { + description "Enter the router context"; + + leaf group { + type types-sros:named-item; + description "Tunnel group name."; + } + + leaf router-instance { + type types-sros:router-instance-base-vprn-loose; + description "Router instance hosting the l2tpv3 session."; + } + + } // container router + + } // container l2tpv3-session + + container i-vpls-mac-flush { + description "Enter the i-vpls-mac-flush context"; + + container bgp-evpn { + description "Enter the bgp-evpn context"; + + leaf send-to-bvpls { + type boolean; + default "true"; + description "Send B-VPLS EVPN flush"; + } + + } // container bgp-evpn + + } // container i-vpls-mac-flush + + container arp-host { + description "Enter the arp-host context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Enable/disable ARP hosts."; + } + + leaf host-limit { + type uint32 { + range "1..131071"; + } + default "1"; + description "Maximum number of ARP triggered hosts."; + } + + leaf min-auth-interval { + type types-sros:time-duration { + range "1..6000"; + } + units "minutes"; + default "15"; + description + "Minimal time that has to pass before incoming ARPs of an active + ARP host are re-authenticated."; + } + + } // container arp-host + + container dhcp { + description "Enter the dhcp context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of DHCP"; + } + + leaf description { + type types-sros:description; + description "Add/remove a text description for DHCP."; + } + + leaf snoop { + type boolean; + default "false"; + description "DHCP snooping."; + } + + container proxy-server { + description "Enter the proxy-server context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of DHCP proxy"; + } + + leaf emulated-server { + type types-sros:ipv4-unicast-address; + description "IP address used as the DHCP server address in the context of this service"; + } + + container lease-time { + description "Enter the lease-time context"; + + leaf value { + type types-sros:time-duration { + range "300..315446399"; + } + units "seconds"; + description "DHCP lease time"; + } + + leaf radius-override { + type boolean; + default "false"; + description "Use lease time information provided by RADIUS server"; + } + + } // container lease-time + + } // container proxy-server + + container option-82 { + description "Enter the option-82 context"; + + leaf action { + type enumeration { + enum "replace" { value 1; } + enum "drop" { value 2; } + enum "keep" { value 3; } + } + default "keep"; + description "What to do with DHCP option 82."; + } + + container circuit-id { + description "Enter the circuit-id context"; + + choice circuit-id { + default "ascii-tuple"; + case none { + + leaf none { + type empty; + description "Do not include the circuit-id."; + } + + } + case ascii-tuple { + + leaf ascii-tuple { + type empty; + description "Use ascii-tuple in the option."; + } + + } + case vlan-ascii-tuple { + + leaf vlan-ascii-tuple { + type empty; + description "Use vlan-ascii-tuple in the option."; + } + + } + case hex-string { + + leaf hex-string { + type types-sros:hex-string { + length "1..66"; + } + description "Use user-defined hexadecimal string in the option"; + } + + } + } + } // container circuit-id + + container remote-id { + description "Enter the remote-id context"; + + choice remote-id { + default "none"; + case none { + + leaf none { + type empty; + description "Do not include the remote-id."; + } + + } + case mac { + + leaf mac { + type empty; + description "Use MAC address in the option."; + } + + } + case ascii-string { + + leaf ascii-string { + type types-sros:string-not-all-spaces { + length "1..32"; + } + description "Use user-defined ASCII string in the option."; + } + + } + case hex-string { + + leaf hex-string { + type types-sros:hex-string { + length "1..66"; + } + description "Use user-defined hexadecimal string in the option."; + } + + } + } + } // container remote-id + + container vendor-specific-option { + description "Enter the vendor-specific-option context"; + + leaf system-id { + type boolean; + default "false"; + description "Send the system ID in the Nokia vendor specific suboption."; + } + + leaf client-mac-address { + type boolean; + default "false"; + description "Send the MAC address in the Nokia vendor specific suboption."; + } + + leaf service-id { + type boolean; + default "false"; + description "Send the service ID in the Nokia vendor specific suboption."; + } + + leaf sap-id { + type boolean; + default "false"; + description "Send the SAP ID in the Nokia vendor specific suboption."; + } + + leaf string { + type types-sros:string-not-all-spaces { + length "1..32"; + } + description "Send a user-defined string in the Nokia vendor specific suboption."; + } + + } // container vendor-specific-option + + } // container option-82 + + container lease-populate { + description "Enter the lease-populate context"; + + leaf max-leases { + type uint32 { + range "0..131071"; + } + default "0"; + description "Maximum number of DHCPv4 leases"; + } + + } // container lease-populate + + } // container dhcp + + container static-host { + description "Enter the static-host context"; + + list ipv4 { + key "ip mac"; + description "Enter the ipv4 context"; + + leaf ip { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-address; + } + description "IP address"; + } + + leaf mac { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:mac-unicast-address; + } + description "MAC address"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the static host"; + } + + leaf sub-profile { + type types-sros:external-named-item; + description "Sub-profile name"; + } + + leaf sla-profile { + type types-sros:external-named-item; + description "SLA profile name"; + } + + leaf ancp-string { + type types-submgt:ancp-string; + description "ANCP string"; + } + + leaf int-dest-id { + type types-submgt:int-dest-id; + description "Intermediate destination ID"; + } + + container subscriber-id { + description "Enter the subscriber-id context"; + + choice subscriber-id { + case string { + + leaf string { + type types-submgt:subscriber-id; + description "Subscriber identification"; + } + + } + case use-sap-id { + + leaf use-sap-id { + type empty; + description "Use the SAP id as subscriber ID"; + } + + } + } + } // container subscriber-id + + container shcv { + description "Enter the shcv context"; + + } // container shcv + + } // list ipv4 + + } // container static-host + + container sub-sla-mgmt { + description "Enter the sub-sla-mgmt context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of subscriber management on this SAP"; + } + + leaf sub-ident-policy { + type types-sros:external-named-item; + description "Subscriber identification policy used on this SAP"; + } + + leaf subscriber-limit { + type types-submgt:sap-subscriber-limit; + default "1"; + description "Maximum number of subscribers on this SAP"; + } + + leaf mac-da-hashing { + type boolean; + default "false"; + description "Use destination MAC address instead of subscriber ID to select egress LAG link"; + } + + container defaults { + description "Enter the defaults context"; + + leaf sub-profile { + type types-sros:external-named-item; + description "Default subscriber profile used for subscribers on this SAP"; + } + + leaf sla-profile { + type types-sros:external-named-item; + description "Default SLA profile for hosts on this SAP"; + } + + container subscriber-id { + description "Enter the subscriber-id context"; + + choice subscriber-id { + case auto-id { + + leaf auto-id { + type empty; + description "Use auto-generated subscriber identification string"; + } + + } + case sap-id { + + leaf sap-id { + type empty; + description "Use SAP ID as default subscriber identification string"; + } + + } + case string { + + leaf string { + type types-submgt:subscriber-id; + description "Subscriber ID policy name"; + } + + } + } + } // container subscriber-id + + container int-dest-id { + description "Enter the int-dest-id context"; + + choice int-dest-id { + case top-q-tag { + + leaf top-q-tag { + type empty; + description "Use the top Q-tag of this SAP"; + } + + } + case string { + + leaf string { + type types-submgt:int-dest-id; + description "Use the configured string"; + } + + } + } + } // container int-dest-id + + } // container defaults + + container single-sub-parameters { + description "Enter the single-sub-parameters context"; + + leaf profiled-traffic-only { + type boolean; + default "false"; + description "Include all traffic in subscriber profile"; + } + + container non-sub-traffic { + presence "true"; + description "Enter the non-sub-traffic context"; + + leaf sub-profile { + type types-sros:external-named-item; + mandatory true; + description "Subscriber IDprofile applied for all non-subscriber traffic"; + } + + leaf sla-profile { + type types-sros:external-named-item; + mandatory true; + description "SLA profile applicable for all non-subscriber traffic"; + } + + leaf subscriber-id { + type types-submgt:subscriber-id; + sros-ext:immutable; + description "Subscriber ID applied for all non-subscriber traffic"; + } + + } // container non-sub-traffic + + } // container single-sub-parameters + + } // container sub-sla-mgmt + + container eth-cfm { + description "Enter the eth-cfm context"; + + leaf collect-lmm-stats { + type boolean; + default "false"; + description "Collect statistics for OAM-PM Loss Measurement Message (LMM) tests"; + } + + leaf-list squelch-ingress-levels { + type uint32 { + range "0..7"; + } + max-elements 8; + description "ETH-CFM PDUs to be silently discarded"; + } + + leaf vmep-filter { + type boolean; + default "false"; + description "Suppress eth-cfm PDUs based on level lower than or equal to configured Virtual MEP"; + } + + container collect-lmm-fc-stats { + description "Enter the collect-lmm-fc-stats context"; + + leaf-list fc { + type types-eth-cfm:fc-type; + max-elements 8; + description "Forwarding class name for which to create an individual profile-unaware counter"; + } + + leaf-list fc-in-profile { + type types-eth-cfm:fc-type; + max-elements 8; + description "Individual counters to create for the specified Forwarding Class"; + } + + } // container collect-lmm-fc-stats + + list mep { + key "md-admin-name ma-admin-name mep-id"; + description "Enter the mep context"; + + leaf md-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique domain name"; + } + + leaf ma-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique association name"; + } + + leaf mep-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:mep-id-type; + } + description "Maintenance association end point identifier"; + } + + leaf primary-vlan { + type boolean; + sros-ext:immutable; + default "false"; + description "MEP provisioned using MA primary VLAN ID"; + } + + leaf direction { + type types-eth-cfm:mp-direction; + sros-ext:immutable; + description "Direction the MEP faces"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MEP"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf mac-address { + type types-sros:mac-unicast-address-no-zero; + description "MAC address for the MEP"; + } + + leaf install-mep { + type boolean; + default "false"; + description "Install MEP in the forwarding plane"; + } + + leaf low-priority-defect { + type types-eth-cfm:lowest-alarm-priority; + default "mac-rem-err-xcon"; + description "Lowest priority defect that is allowed to generate a fault alarm"; + } + + leaf fault-propagation { + type types-eth-cfm:fault-propagation-type; + description "Fault propagation for the MEP"; + } + + leaf ccm { + type boolean; + default "false"; + description "Generate CCM messages"; + } + + leaf ccm-ltm-priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of CCM and LTM messages transmitted by the MEP"; + } + + leaf ccm-padding-size { + type uint32 { + range "3..1500"; + } + description "Additional octets inserted into CCM PDU for data TLV padding"; + } + + leaf lbm-svc-act-responder { + type boolean; + default "false"; + description "Process service activation streams encapsulated in ETH-CFM request Loopback Message"; + } + + leaf one-way-delay-threshold { + type uint32 { + range "0..600"; + } + units "seconds"; + default "3"; + description "Threshold for one way delay test"; + } + + container alarm-notification { + description "Enter the alarm-notification context"; + + leaf fng-alarm-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm"; + } + + leaf fng-reset-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm is reset"; + } + + } // container alarm-notification + + container ais { + presence + "The generation and reception of Alarm Indication Signal (AIS) + message parameters"; + description "Enter the ais context"; + + leaf-list client-meg-level { + type uint32 { + range "1..7"; + } + max-elements 7; + description "Client MEG level for AIS message generation"; + } + + leaf interface-support { + type boolean; + default "false"; + description "Allow generation of AIS PDUs based on the associated endpoint state"; + } + + leaf interval { + type uint32 { + range "1|60"; + } + units "seconds"; + default "1"; + description "Transmission interval for AIS messages"; + } + + leaf low-priority-defect { + type enumeration { + enum "all-def" { value 1; } + enum "mac-rem-err-xcon" { value 2; } + } + default "all-def"; + description "Lowest priority defect for MEP AIS generation"; + } + + leaf priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of AIS messages originated by the node"; + } + + } // container ais + + container csf { + presence "The reception of Client Signal Fail (CSF) message parameters"; + description "Enter the csf context"; + + leaf multiplier { + type decimal64 { + range "0.0|2.0..30.0"; + fraction-digits 1; + } + default "3.5"; + description "Receive period multiplier to time out CSF"; + } + + } // container csf + + container eth-test { + presence "Enable/disable eth-test functionality on MEP."; + description "Enter the eth-test context"; + + leaf bit-error-threshold { + type uint32 { + range "0..11840"; + } + units "bit errors"; + default "1"; + description "Lowest priority defect threshold for the bit error trap to generate a fault alarm"; + } + + container test-pattern { + description "Enter the test-pattern context"; + + leaf pattern { + type enumeration { + enum "all-zeros" { value 0; } + enum "all-ones" { value 1; } + } + default "all-zeros"; + description "Test pattern for eth-test frames"; + } + + leaf crc-tlv { + type boolean; + default "false"; + description "Generate a CRC checksum"; + } + + } // container test-pattern + + } // container eth-test + + container grace { + description "Enter the grace context"; + + container eth-ed { + description "Enter the eth-ed context"; + + leaf max-rx-defect-window { + type uint32 { + range "1..86400"; + } + units "seconds"; + description "Value to compare to received peer value, lower is used as maximum ETH-ED expected defect window"; + } + + leaf priority { + type int32 { + range "0..7"; + } + description "Transmission priority for ETH-ED PDUs"; + } + + leaf rx-eth-ed { + type boolean; + default "true"; + description "Receive and process ETH-ED PDUs"; + } + + leaf tx-eth-ed { + type boolean; + default "false"; + description "Transmit ETH-ED PDUs"; + } + + } // container eth-ed + + container eth-vsm-grace { + description "Enter the eth-vsm-grace context"; + + leaf rx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the reception and processing of the Nokia ETH-CFM Grace PDU on the MEP"; + } + + leaf tx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the transmission of the Nokia ETH-CFM Grace PDU from the MEP"; + } + + } // container eth-vsm-grace + + } // container grace + + } // list mep + + } // container eth-cfm + + container mc-ring { + presence "Prepare SAP for use in MC-ring"; + description "Enter the mc-ring context"; + + leaf ring-node { + type types-sros:named-item; + mandatory true; + description "Name for the ring node associated with this SAP"; + } + + } // container mc-ring + + } // list sap + + list capture-sap { + key "sap-id"; + description "Enter the capture-sap context"; + + leaf sap-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:sap; + } + description "SAP identifier"; + } + + leaf description { + type types-sros:long-description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the SAP"; + } + + leaf bandwidth { + type types-services:sap-bandwidth; + units "kilobps"; + description "SAP bandwidth"; + } + + leaf dist-cpu-protection { + type types-sros:named-item; + description "Distributed CPU protection policy for SAP"; + } + + leaf host-lockout-policy { + type types-sros:named-item; + description "Host lockout policy"; + } + + leaf radius-auth-policy { + type types-sros:named-item; + description "RADIUS authentication policy"; + } + + leaf nasreq-auth-policy { + type types-sros:named-item; + description "Diameter NASREQ application policy to use for authentication"; + } + + leaf allow-dot1q-msaps { + type boolean; + default "false"; + description "Create IEEE 802.1q Managed SAP's on an IEEE 802.1ad port"; + } + + leaf track-srrp { + type uint32 { + range "1..4294967295"; + } + description "SRRP instance that this capture SAP tracks"; + } + + container ingress { + description "Enter the ingress context"; + + container filter { + description "Enter the filter context"; + + leaf mac { + type types-filter:filter-name; + description "MAC filter identifier"; + } + + } // container filter + + } // container ingress + + container cpu-protection { + description "Enter the cpu-protection context"; + + leaf policy-id { + type types-services:cpm-prot-policy-id; + description "CPM protection policy"; + } + + choice monitoring { + case mac { + + leaf mac-monitoring { + type empty; + description "Monitor MAC for CPU protection"; + } + + } + } + } // container cpu-protection + + container trigger-packet { + description "Enter the trigger-packet context"; + + leaf arp { + type boolean; + default "false"; + description "ARP packet"; + } + + leaf data { + type boolean; + default "false"; + description "Data packet"; + } + + leaf dhcp { + type boolean; + default "false"; + description "DHCP packet"; + } + + leaf dhcp6 { + type boolean; + default "false"; + description "DHCP6 packet"; + } + + leaf pppoe { + type boolean; + default "false"; + description "PPPoE packet"; + } + + leaf rtr-solicit { + type boolean; + default "false"; + description "Router-solicit packet"; + } + + } // container trigger-packet + + container msap-defaults { + description "Enter the msap-defaults context"; + + leaf policy { + type types-sros:named-item; + description "MSAP policy"; + } + + leaf service-name { + type types-services:service-name; + description "Service name"; + } + + leaf group-interface { + type types-sros:interface-name; + description "Group interface"; + } + + } // container msap-defaults + + container ipoe-session { + description "Enter the ipoe-session context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of IPoE session"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf ipoe-session-policy { + type types-sros:named-item; + description "IPoE Session policy to be used for new sessions"; + } + + leaf user-db { + type types-sros:named-item; + description "Local user database that is used to (pre-)authenticate new sessions"; + } + + } // container ipoe-session + + container dhcp { + description "Enter the dhcp context"; + + leaf python-policy { + type types-sros:named-item; + description "Python policy"; + } + + leaf user-db { + type types-sros:named-item; + description "Local user database"; + } + + } // container dhcp + + container dhcp6 { + description "Enter the dhcp6 context"; + + leaf python-policy { + type types-sros:named-item; + description "Python policy"; + } + + leaf user-db { + type types-sros:named-item; + description "Local user database"; + } + + } // container dhcp6 + + container pppoe { + description "Enter the pppoe context"; + + leaf policy { + type types-sros:named-item; + description "PPP policy"; + } + + leaf python-policy { + type types-sros:named-item; + description "Python policy"; + } + + leaf user-db { + type types-sros:named-item; + description "Local user database"; + } + + } // container pppoe + + container router-solicit { + description "Enter the router-solicit context"; + + leaf user-db { + type types-sros:named-item; + description "Local user database"; + } + + } // container router-solicit + + } // list capture-sap + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Router interface name"; + } + + leaf description { + type types-sros:very-long-description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the interface"; + } + + leaf mac { + type types-sros:mac-unicast-address; + description "MAC address for the interface"; + } + + container hold-time { + description "Enter the hold-time context"; + + container ipv4 { + description "Enter the ipv4 context"; + + container up { + description "Enter the up context"; + + leaf seconds { + type types-router:hold-time-seconds; + units "seconds"; + description "Up hold time for the IP interface"; + } + + } // container up + + container down { + description "Enter the down context"; + + leaf seconds { + type types-router:hold-time-seconds; + units "seconds"; + description "Down hold time for the IP interface"; + } + + leaf init-only { + type boolean; + default "false"; + description "Apply down delay only when interface is configured or after reboot"; + } + + } // container down + + } // container ipv4 + + } // container hold-time + + container ipv4 { + description "Enter the ipv4 context"; + + container primary { + presence "Primary IPv4 address for this router interface."; + description "Enter the primary context"; + + leaf address { + type types-sros:ipv4-address; + mandatory true; + description "IPv4 address for a VPLS interface"; + } + + leaf prefix-length { + type uint32 { + range "0..32"; + } + mandatory true; + description "IPv4 address prefix length"; + } + + } // container primary + + container neighbor-discovery { + description "Enter the neighbor-discovery context"; + + leaf timeout { + type uint32 { + range "0..65535"; + } + units "seconds"; + default "14400"; + description "ARP timeout value to determine how long an ARP entry remains in the ARP cache"; + } + + list static-neighbor { + key "ipv4-address"; + description "Enter the static-neighbor context"; + + leaf ipv4-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-address; + } + description "IPv4 address corresponding to the media-dependent physical address"; + } + + leaf mac-address { + type yang:mac-address; + mandatory true; + description "Media-dependent physical address"; + } + + } // list static-neighbor + + } // container neighbor-discovery + + } // container ipv4 + + } // list interface + + container igmp-host-tracking { + description "Enter the igmp-host-tracking context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of IGMP host tracking"; + } + + leaf expiry-time { + type types-sros:time-duration { + range "1..65535"; + } + units "seconds"; + default "260"; + description "Time during which the system continues to track inactive hosts"; + } + + } // container igmp-host-tracking + + container wlan-gw { + description "Enter the wlan-gw context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of WLAN-GW"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf sap-template { + type types-sros:named-item; + description "Template used when creating internal SAPs towards ISAs"; + } + + } // container wlan-gw + + container gsmp { + description "Enter the gsmp context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of GSMP"; + } + + list group { + key "name"; + max-elements 1024; + description "Enter the group context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "GSMP neighbor group name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the GSMP group"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf keepalive { + type types-sros:time-duration { + range "1..25"; + } + units "seconds"; + default "10"; + description "Keepalive value for the GSMP connections in this group"; + } + + leaf hold-multiplier { + type uint32 { + range "1..100"; + } + default "3"; + description "Hold-multiplier for the GSMP connections in this group"; + } + + leaf persistency { + type boolean; + default "false"; + description "Store DSL line information when the GSMP connection terminates"; + } + + leaf idle-filter { + type boolean; + default "false"; + description "Filter ANCP messages from IDLE DSL lines"; + } + + container ancp { + description "Enter the ancp context"; + + leaf dynamic-topology-discovery { + type boolean; + default "true"; + description "Enable the ANCP dynamic topology discovery capability"; + } + + leaf oam { + type boolean; + default "false"; + description "Enable GSMP ANCP OAM capability at startup of GSMP connection"; + } + + } // container ancp + + list neighbor { + key "remote-address"; + description "Enter the neighbor context"; + + leaf remote-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-unicast-address; + } + description "GSMP neighbor remote IP address"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the GSMP neighbor"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf local-address { + type types-sros:ipv4-unicast-address; + description "Restrict connections to this local address only within the service running ANCP"; + } + + container priority-marking { + description "Enter the priority-marking context"; + + choice priority-marking { + case dscp { + + leaf dscp { + type types-qos:dscp-name; + description "DSCP that is used while remarking the in profile packets"; + } + + } + case prec { + + leaf prec { + type types-qos:precedence-value; + description "Precedence priority marking"; + } + + } + } + } // container priority-marking + + } // list neighbor + + } // list group + + } // container gsmp + + } // list vpls + + list vprn { + key "service-name"; + description "Enter the vprn context"; + + leaf service-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-services:service-name; + } + description "Name of the service"; + } + + container aggregates { + description "Enter the aggregates context"; + + list aggregate { + key "ip-prefix"; + description "Enter the aggregate context"; + + leaf ip-prefix { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-unicast-prefix; + } + description "IP address prefix to match for aggregation"; + } + + leaf as-set { + type boolean; + default "false"; + description "Allow aggregate route as an AS-SET option"; + } + + leaf-list community { + type types-sros:community; + max-elements 12; + ordered-by user; + description "Community name that is added to aggregate route"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf summary-only { + type boolean; + default "false"; + description "Advertise only the aggregate route and not the specific routes that make up the aggregate"; + } + + leaf local-preference { + type int64 { + range "0..4294967295"; + } + description "Default local preference if aggregate route is exported and advertised to BGP peers"; + } + + choice next-hop { + case blackhole { + + container blackhole { + presence "blackhole"; + description "Enter the blackhole context"; + + leaf generate-icmp { + type boolean; + default "false"; + description "Send ICMP unreachable messages when packets match an aggregate route with black-hole next-hop"; + } + + } // container blackhole + + } + case indirect { + + leaf indirect { + type types-sros:ip-unicast-address; + sros-ext:immutable; + description "Address of indirect next hop"; + } + + } + } + container aggregator { + description "Enter the aggregator context"; + + leaf as-number { + type uint32 { + range "1..max"; + } + description "Aggregator Autonomous System Number (ASN)"; + } + + leaf address { + type types-sros:ipv4-unicast-address; + description "Aggregator IP address"; + } + + } // container aggregator + + } // list aggregate + + } // container aggregates + + container bgp { + presence "Enable BGP for VPRN services"; + description "Enter the bgp context"; + + list group { + key "group-name"; + description "Enter the group context"; + + leaf group-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "BGP peer group"; + } + + list prefix-limit { + key "family"; + description "Enter the prefix-limit context"; + + leaf family { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type enumeration { + enum "ipv4" { value 1; } + enum "ipv6" { value 3; } + enum "mcast-ipv4" { value 4; } + enum "flow-ipv4" { value 10; } + enum "flow-ipv6" { value 14; } + enum "mcast-ipv6" { value 16; } + enum "label-ipv4" { value 17; } + } + } + description "Address family to which the limit applies"; + } + + leaf maximum { + type uint32 { + range "1..4294967295"; + } + mandatory true; + description "Specifies the maximum number of routes that can be learned from this peer."; + } + + leaf log-only { + type boolean; + default "false"; + description "Send warning message if specified threshold or limit is reached, without disabling BGP peer session"; + } + + leaf threshold { + type uint32 { + range "1..100"; + } + default "90"; + description "Threshold value that triggers a warning message"; + } + + leaf idle-timeout { + type int32 { + range "1..1024"; + } + description "Time that BGP peering remains idle before reconnecting to peers"; + } + + leaf post-import { + type boolean; + default "false"; + description "Apply prefix limit only to number of routes accepted by import policies"; + } + + } // list prefix-limit + + } // list group + + list neighbor { + key "ip-address"; + description "Enter the neighbor context"; + + leaf ip-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-address-with-zone; + } + description "IP address that the neighbor uses to communicate with BGP peers"; + } + + list prefix-limit { + key "family"; + description "Enter the prefix-limit context"; + + leaf family { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type enumeration { + enum "ipv4" { value 1; } + enum "ipv6" { value 3; } + enum "mcast-ipv4" { value 4; } + enum "flow-ipv4" { value 10; } + enum "flow-ipv6" { value 14; } + enum "mcast-ipv6" { value 16; } + enum "label-ipv4" { value 17; } + } + } + description "Address family to which the limit applies"; + } + + leaf maximum { + type uint32 { + range "1..4294967295"; + } + mandatory true; + description "Specifies the maximum number of routes that can be learned from this peer."; + } + + leaf log-only { + type boolean; + default "false"; + description "Send warning message if specified threshold or limit is reached, without disabling BGP peer session"; + } + + leaf threshold { + type uint32 { + range "1..100"; + } + default "90"; + description "Threshold value that triggers a warning message"; + } + + leaf idle-timeout { + type int32 { + range "1..1024"; + } + description "Time that BGP peering remains idle before reconnecting to peers"; + } + + leaf post-import { + type boolean; + default "false"; + description "Apply prefix limit only to number of routes accepted by import policies"; + } + + } // list prefix-limit + + } // list neighbor + + } // container bgp + + list interface { + key "interface-name"; + description "Enter the interface context"; + + leaf interface-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "Name of the interface"; + } + + list sap { + key "sap-id"; + max-elements 1; + description "Enter the sap context"; + + leaf sap-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:sap; + } + description "SAP identifier"; + } + + leaf description { + type types-sros:long-description; + description "Text description"; + } + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of the SAP"; + } + + leaf accounting-policy { + type types-log:log-policy-id; + description "Accounting policy"; + } + + leaf anti-spoof { + type types-services:anti-spoof-option; + description "Anti-spoof filtering"; + } + + leaf bandwidth { + type types-services:sap-bandwidth; + units "kilobps"; + description "SAP bandwidth"; + } + + leaf calling-station-id { + type types-sros:string-not-all-spaces { + length "1..64"; + } + description "Calling station ID"; + } + + leaf collect-stats { + type boolean; + default "false"; + description "Collect accounting statistics"; + } + + leaf dist-cpu-protection { + type types-sros:named-item; + description "Distributed CPU protection policy for SAP"; + } + + leaf host-admin-state { + type types-sros:admin-state; + default "enable"; + description "Enable/disable administrative state of hosts"; + } + + leaf host-lockout-policy { + type types-sros:named-item; + description "Host lockout policy"; + } + + leaf multi-service-site { + type types-sros:named-item; + description "Multi service site name"; + } + + container ingress { + description "Enter the ingress context"; + + leaf queue-group-redirect-list { + type types-sros:named-item; + description "Queue group redirect list"; + } + + container qos { + description "Enter the qos context"; + + leaf match-qinq-dot1p { + type enumeration { + enum "top" { value 2; } + enum "bottom" { value 3; } + } + description "Ingress match QinQ Dot1p"; + } + + container sap-ingress { + description "Enter the sap-ingress context"; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Policy identifier"; + } + + leaf queuing-type { + type types-services:services-sap-queuing-type; + description "Ingress queuing type"; + } + + container fp-redirect-group { + description "Enter the fp-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Forwarding-plane queue group policy"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Queue group instance"; + } + + } // container fp-redirect-group + + container overrides { + description "Enter the overrides context"; + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-queue-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type uint32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobps"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf monitor-depth { + type boolean; + default "false"; + description "Monitor queue depth"; + } + + choice queue-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-services:sap-pir-rate-ovr; + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type types-services:sap-cir-rate-ovr; + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent-or-default-override; + description "Percentage reduction from the MBS for a queue drop tail"; + } + + } // container low + + } // container drop-tail + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight-override; + description "PIR parameter that overrides parent for queue group"; + } + + leaf cir-weight { + type types-qos:weight-override; + description "CIR parameter that overrides parent for queue group"; + } + + } // container parent + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:ingress-policer-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf packet-byte-offset { + type types-qos:ingress-per-packet-offset-override; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type types-qos:ingress-policer-stat-mode; + description "Mode of statistics collected by the policer"; + } + + choice policer-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + } // list policer + + } // container overrides + + } // container sap-ingress + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy name"; + } + + container overrides { + presence "Apply a policer control policy override."; + description "Enter the overrides context"; + + container root { + description "Enter the root context"; + + leaf max-rate { + type types-services:sap-max-rate-ovr; + description "Maximum frame-based bandwidth limit"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-thresh-separation { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of separation buffer space"; + } + + list priority { + key "priority-level"; + description "Enter the priority context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of cumulative buffer space allowed"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container root + + } // container overrides + + } // container policer-control-policy + + container scheduler-policy { + description "Enter the scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Scheduler policy name"; + } + + container overrides { + description "Enter the overrides context"; + + list scheduler { + key "scheduler-name"; + description "Enter the scheduler context"; + + leaf scheduler-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler override policy name"; + } + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-weight { + type types-qos:weight; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + description "Specifies the administrative PIR"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "sum" { value -3; } + enum "max" { value -1; } + } + } + description "Specifies the administrative CIR"; + } + + } // container rate + + } // list scheduler + + } // container overrides + + } // container scheduler-policy + + } // container qos + + container filter { + description "Enter the filter context"; + + leaf ip { + type types-filter:filter-name; + description "IP filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + } // container ingress + + container egress { + description "Enter the egress context"; + + leaf queue-group-redirect-list { + type types-sros:named-item; + description "Queue group redirect list"; + } + + container qos { + description "Enter the qos context"; + + leaf qinq-mark-top-only { + type boolean; + default "false"; + description "Mark top Q-tags"; + } + + container sap-egress { + description "Enter the sap-egress context"; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Policy identifier"; + } + + container port-redirect-group { + description "Enter the port-redirect-group context"; + + leaf group-name { + type types-sros:named-item; + description "Policy for port redirect queue group"; + } + + leaf instance { + type types-services:qos-qgrp-instance-id; + description "Instance of port queue group"; + } + + } // container port-redirect-group + + container overrides { + description "Enter the overrides context"; + + leaf hs-secondary-shaper { + type types-sros:named-item; + description "HS Secondary Shaper"; + } + + container hsmda-queues { + description "Enter the hsmda-queues context"; + + leaf secondary-shaper { + type types-sros:named-item; + description "Secondary shaper for the HSMDA queue"; + } + + leaf packet-byte-offset { + type types-services:egress-hsmda-queue-packet-byte-offset; + description "Packet byte offset for HSMDA queue"; + } + + leaf wrr-policy { + type types-sros:named-item; + description "WRR policy for the HSMDA queue"; + } + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Egress HSMDA queue ID"; + } + + leaf mbs { + type types-qos:hsmda-queue-burst-size-override; + units "bytes"; + description "Buffer space allowed for the queue"; + } + + leaf rate { + type types-qos:hsmda-queue-pir-rate-override; + description "Administrative PIR rate."; + } + + leaf slope-policy { + type types-sros:named-item; + description + "Name of the slope-policy which is used to override the + default slope-policy for the named buffer pool."; + } + + leaf wrr-weight { + type types-qos:hsmda-wrr-weight-override; + description "Weight value for the HSMDA queue"; + } + + } // list queue + + } // container hsmda-queues + + list queue { + key "queue-id"; + description "Enter the queue context"; + + leaf queue-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:egress-queue-id; + } + description "Policer unique ID"; + } + + leaf avg-frame-overhead { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description + "Encapsulation overhead, in centipercent, used to + translate packet-based rate to frame-based rate and vice versa."; + } + + leaf burst-limit { + type union { + type types-qos:bytes { + range "1..14000000"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "Explicit shaping burst size of a queue."; + } + + leaf cbs { + type union { + type uint32 { + range "0..1048576"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "kilobytes"; + description "MBS"; + } + + leaf monitor-depth { + type boolean; + default "false"; + description "Monitor queue depth"; + } + + leaf hs-wrr-weight { + type types-qos:hs-wrr-weight-override; + default "1"; + description "Weighted Round Robin (WRR) weight to parent with this queue into the scheduler"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight-override; + description "Scheduling class weight."; + } + + choice queue-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type types-services:sap-pir-rate-ovr; + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type types-services:sap-cir-rate-ovr; + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + container adaptation-rule { + description "Enter the adaptation-rule context"; + + leaf pir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational PIR value"; + } + + leaf cir { + type types-qos:adaptation-rule-override; + description "Constraint used when deriving the operational CIR value"; + } + + } // container adaptation-rule + + container drop-tail { + description "Enter the drop-tail context"; + + container low { + description "Enter the low context"; + + leaf percent-reduction-from-mbs { + type types-qos:burst-percent-or-default-override; + description "Percentage reduction from the MBS for a queue drop tail"; + } + + } // container low + + } // container drop-tail + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight-override; + description "PIR parameter that overrides parent for queue group"; + } + + leaf cir-weight { + type types-qos:weight-override; + description "CIR parameter that overrides parent for queue group"; + } + + } // container parent + + container hs-wred-queue { + description "Enter the hs-wred-queue context"; + + leaf policy { + type types-sros:named-item; + description "Name of slope-policy."; + } + + } // container hs-wred-queue + + } // list queue + + list policer { + key "policer-id"; + description "Enter the policer context"; + + leaf policer-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:sap-egress-policer-id; + } + description "Policer unique ID"; + } + + leaf cbs { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "CBS"; + } + + leaf mbs { + type union { + type types-qos:bytes { + range "0..1073741824"; + } + type enumeration { + enum "auto" { value -1; } + } + } + description "MBS"; + } + + leaf packet-byte-offset { + type types-qos:egress-per-packet-offset-override; + description "Size of each packet, handled by the policer, to be modified"; + } + + leaf stat-mode { + type types-qos:egress-policer-stat-mode; + description "Mode of statistics collected by the policer"; + } + + choice policer-override-rate { + case rate { + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "PIR rate"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "CIR rate"; + } + + } // container rate + + } + case percent-rate { + + container percent-rate { + description "Enter the percent-rate context"; + + leaf pir { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "PIR percent rate"; + } + + leaf cir { + type decimal64 { + range "0.00..100.00"; + fraction-digits 2; + } + description "CIR percent rate"; + } + + } // container percent-rate + + } + } + } // list policer + + list hs-wrr-group { + key "group-id"; + description "Enter the hs-wrr-group context"; + + leaf group-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hs-wrr-group-id; + } + description "HS WRR group identifier"; + } + + leaf hs-class-weight { + type types-qos:hs-class-weight-override; + description "Weight of scheduling class."; + } + + choice rate-or-percent-rate { + case rate { + + leaf rate { + type union { + type uint32 { + range "1..2000000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + description "Administrative PIR."; + } + + } + case percent-rate { + + leaf percent-rate { + type decimal64 { + range "0.01..100.00"; + fraction-digits 2; + } + description "Administrative PIR percent."; + } + + } + } + } // list hs-wrr-group + + } // container overrides + + } // container sap-egress + + container policer-control-policy { + description "Enter the policer-control-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Policer control policy name"; + } + + container overrides { + presence "Apply a policer control policy override."; + description "Enter the overrides context"; + + container root { + description "Enter the root context"; + + leaf max-rate { + type types-services:sap-max-rate-ovr; + description "Maximum frame-based bandwidth limit"; + } + + container priority-mbs-thresholds { + description "Enter the priority-mbs-thresholds context"; + + leaf min-thresh-separation { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of separation buffer space"; + } + + list priority { + key "priority-level"; + description "Enter the priority context"; + + leaf priority-level { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-qos:hierarchy-level; + } + description "Priority level"; + } + + leaf mbs-contribution { + type union { + type types-qos:bytes { + range "0..16777216"; + } + type enumeration { + enum "auto" { value -1; } + } + } + units "bytes"; + description "Minimum amount of cumulative buffer space allowed"; + } + + } // list priority + + } // container priority-mbs-thresholds + + } // container root + + } // container overrides + + } // container policer-control-policy + + container scheduler-policy { + description "Enter the scheduler-policy context"; + + leaf policy-name { + type types-sros:named-item; + description "Scheduler policy name"; + } + + container overrides { + description "Enter the overrides context"; + + list scheduler { + key "scheduler-name"; + description "Enter the scheduler context"; + + leaf scheduler-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "Scheduler override policy name"; + } + + container parent { + description "Enter the parent context"; + + leaf weight { + type types-qos:weight; + description "Weight to be used by the scheduler for feeding this queue"; + } + + leaf cir-weight { + type types-qos:weight; + description "Weight that is used by the scheduler until the committed rate for feeding this queue"; + } + + } // container parent + + container rate { + description "Enter the rate context"; + + leaf pir { + type union { + type int64 { + range "1..6400000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + description "Specifies the administrative PIR"; + } + + leaf cir { + type union { + type int64 { + range "0..6400000000"; + } + type enumeration { + enum "sum" { value -3; } + enum "max" { value -1; } + } + } + description "Specifies the administrative CIR"; + } + + } // container rate + + } // list scheduler + + } // container overrides + + } // container scheduler-policy + + container vlan-qos-policy { + description "Attach an egress vlan-qos-policy."; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Egress vlan-qos-policy name"; + } + + } // container vlan-qos-policy + + container egress-remark-policy { + description "Attach an egress-remark-policy."; + + leaf policy-name { + type types-qos:qos-policy-name; + description "Egress-remark-policy name"; + } + + } // container egress-remark-policy + + } // container qos + + container filter { + description "Enter the filter context"; + + leaf ip { + type types-filter:filter-name; + description "MAC filter ID"; + } + + leaf ipv6 { + type types-filter:filter-name; + description "IPv6 filter identifier"; + } + + } // container filter + + container agg-rate { + description "Enter the agg-rate context"; + + leaf limit-unused-bandwidth { + type boolean; + default "false"; + description "Enable aggregate rate overrun protection"; + } + + leaf rate { + type types-services:agg-rate-rate; + description "Maximum total rate of all egress queues in kbps."; + } + + leaf queue-frame-based-accounting { + type boolean; + default "false"; + description "Enable frame-based accounting on all policers and queues associated with context"; + } + + leaf cir { + type union { + type int32 { + range "0..100000000"; + } + type enumeration { + enum "max" { value -1; } + } + } + units "kilobps"; + default "0"; + description "Specifies the administrative CIR."; + } + + } // container agg-rate + + } // container egress + + container cpu-protection { + description "Enter the cpu-protection context"; + + leaf policy-id { + type types-services:cpm-prot-policy-id; + description "CPM protection policy"; + } + + choice monitoring { + case mac { + + leaf mac-monitoring { + type empty; + description "Monitor MAC for CPU protection"; + } + + } + case cfm { + + container eth-cfm-monitoring { + presence "Enable ETH CFM monitoring configuration."; + description "Enter the eth-cfm-monitoring context"; + + leaf aggregate { + type empty; + description "Apply rate limit to the sum of the per peer packet rates"; + } + + leaf car { + type empty; + description "Eth-CFM packets to be ignored when enforcing overall rate"; + } + + } // container eth-cfm-monitoring + + } + case ip { + + leaf ip-src-monitoring { + type empty; + description "Enable IP source monitoring for CPU protection"; + } + + } + } + } // container cpu-protection + + container lag { + description "Enter the lag context"; + + leaf link-map-profile { + type types-services:link-map-profile-id; + description "LAG link map profile applied to a SAP or network interface"; + } + + container per-link-hash { + description "Configure per-link-hash information."; + + leaf class { + type types-services:sap-lag-per-link-hash-class; + default "1"; + description "Configure per-link-hash class."; + } + + leaf weight { + type types-services:sap-lag-per-link-hash-weight; + default "1"; + description "Configure per-link-hash weight."; + } + + } // container per-link-hash + + } // container lag + + container fwd-wholesale { + description "Enter the fwd-wholesale context"; + + leaf pppoe-service { + type types-services:service-name; + description "PPPoE service name"; + } + + } // container fwd-wholesale + + container eth-cfm { + description "Enter the eth-cfm context"; + + leaf collect-lmm-stats { + type boolean; + default "false"; + description + "Enable/disable the collection of statistics for OAM-PM + Loss Measurement Message (LMM) tests "; + } + + leaf-list squelch-ingress-levels { + type uint32 { + range "0..7"; + } + max-elements 8; + description "ETH-CFM PDUs to be silently discarded"; + } + + container collect-lmm-fc-stats { + description "Enter the collect-lmm-fc-stats context"; + + leaf-list fc { + type types-eth-cfm:fc-type; + max-elements 8; + description "Forwarding class name for which to create an individual profile-unaware counter"; + } + + leaf-list fc-in-profile { + type types-eth-cfm:fc-type; + max-elements 8; + description "Individual counters to create for the specified Forwarding Class"; + } + + } // container collect-lmm-fc-stats + + list mep { + key "md-admin-name ma-admin-name mep-id"; + description "Enter the mep context"; + + leaf md-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique domain name"; + } + + leaf ma-admin-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:admin-name; + } + description "Unique association name"; + } + + leaf mep-id { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-eth-cfm:mep-id-type; + } + description "Maintenance association end point identifier"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the MEP"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf install-mep { + type boolean; + default "false"; + description "Install MEP in the forwarding plane"; + } + + leaf low-priority-defect { + type types-eth-cfm:lowest-alarm-priority; + default "mac-rem-err-xcon"; + description "Lowest priority defect that is allowed to generate a fault alarm"; + } + + leaf fault-propagation { + type types-eth-cfm:fault-propagation-type; + description "Fault propagation for the MEP"; + } + + leaf ccm { + type boolean; + default "false"; + description "Generate CCM messages"; + } + + leaf ccm-ltm-priority { + type types-eth-cfm:frame-priority; + default "7"; + description "Priority of CCM and LTM messages transmitted by the MEP"; + } + + leaf ccm-padding-size { + type uint32 { + range "3..1500"; + } + description "Additional octets inserted into CCM PDU for data TLV padding"; + } + + leaf one-way-delay-threshold { + type uint32 { + range "0..600"; + } + units "seconds"; + default "3"; + description "Threshold for one way delay test"; + } + + leaf ais { + type boolean; + default "false"; + description "Generate AIS frames from the Maintenance Entity Group (MEG)."; + } + + container alarm-notification { + description "Enter the alarm-notification context"; + + leaf fng-alarm-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm"; + } + + leaf fng-reset-time { + type int32 { + range "250|500|1000"; + } + units "centiseconds"; + description "Time to expire before a Fault Notification Generation (FNG) alarm is reset"; + } + + } // container alarm-notification + + container csf { + presence "The reception of Client Signal Fail (CSF) message parameters"; + description "Enter the csf context"; + + leaf multiplier { + type decimal64 { + range "0.0|2.0..30.0"; + fraction-digits 1; + } + default "3.5"; + description "Receive period multiplier to time out CSF"; + } + + } // container csf + + container eth-test { + presence "Enable/disable eth-test functionality on MEP."; + description "Enter the eth-test context"; + + leaf bit-error-threshold { + type uint32 { + range "0..11840"; + } + units "bit errors"; + default "1"; + description "Lowest priority defect threshold for the bit error trap to generate a fault alarm"; + } + + container test-pattern { + description "Enter the test-pattern context"; + + leaf pattern { + type enumeration { + enum "all-zeros" { value 0; } + enum "all-ones" { value 1; } + } + default "all-zeros"; + description "Test pattern for eth-test frames"; + } + + leaf crc-tlv { + type boolean; + default "false"; + description "Generate a CRC checksum"; + } + + } // container test-pattern + + } // container eth-test + + container grace { + description "Enter the grace context"; + + container eth-ed { + description "Enter the eth-ed context"; + + leaf max-rx-defect-window { + type uint32 { + range "1..86400"; + } + units "seconds"; + description "Value to compare to received peer value, lower is used as maximum ETH-ED expected defect window"; + } + + leaf priority { + type int32 { + range "0..7"; + } + description "Transmission priority for ETH-ED PDUs"; + } + + leaf rx-eth-ed { + type boolean; + default "true"; + description "Receive and process ETH-ED PDUs"; + } + + leaf tx-eth-ed { + type boolean; + default "false"; + description "Transmit ETH-ED PDUs"; + } + + } // container eth-ed + + container eth-vsm-grace { + description "Enter the eth-vsm-grace context"; + + leaf rx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the reception and processing of the Nokia ETH-CFM Grace PDU on the MEP"; + } + + leaf tx-eth-vsm-grace { + type boolean; + default "true"; + description "Allow the transmission of the Nokia ETH-CFM Grace PDU from the MEP"; + } + + } // container eth-vsm-grace + + } // container grace + + } // list mep + + } // container eth-cfm + + list ip-tunnel { + key "tunnel-name"; + max-elements 1; + description "Enter the ip-tunnel context"; + + leaf tunnel-name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:interface-name; + } + description "IP tunnel name"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the tunnel"; + } + + leaf description { + type types-sros:description; + description "Text description"; + } + + leaf clear-df-bit { + type boolean; + default "false"; + description "Clear the Do-not-Fragment bit"; + } + + leaf delivery-service { + type types-services:service-name; + description "Delivery service name"; + } + + leaf dscp { + type types-qos:dscp-name; + description "Differentiated Services Code Point (DSCP) name"; + } + + leaf encapsulated-ip-mtu { + type uint32 { + range "512..9000"; + } + units "bytes"; + description "Encapsulated IP MTU of this tunnel"; + } + + leaf ip-mtu { + type uint32 { + range "512..9000"; + } + units "bytes"; + description "IP MTU of this tunnel"; + } + + leaf public-tcp-mss-adjust { + type union { + type uint32 { + range "512..9000"; + } + type enumeration { + enum "auto" { value 0; } + } + } + units "bytes"; + description "TCP maximum segment size (MSS) on private network"; + } + + leaf private-tcp-mss-adjust { + type int32 { + range "512..9000"; + } + units "bytes"; + description "TCP maximum segment size (MSS) on private network"; + } + + leaf reassembly { + type union { + type int32 { + range "1..5000"; + } + type enumeration { + enum "use-tunnel-group-setting" { value -1; } + enum "none" { value 0; } + } + } + units "milliseconds"; + default "use-tunnel-group-setting"; + description "Reassembly wait time"; + } + + leaf remote-ip-address { + type types-sros:ip-address; + description "Remote IP address of this tunnel"; + } + + leaf backup-remote-ip-address { + type types-sros:ip-address; + description "Backup remote IP address that is applied to this tunnel"; + } + + leaf local-ip-address { + type types-sros:ip-address; + description "Local IP address of this tunnel"; + } + + container icmp6-generation { + description "Enter the icmp6-generation context"; + + container packet-too-big { + description "Enter the packet-too-big context"; + + leaf admin-state { + type types-sros:admin-state; + default "enable"; + description "Administrative state of packet-too-big messages"; + } + + leaf number { + type uint32 { + range "10..1000"; + } + default "100"; + description "Number of packet-too-big ICMPv6 messages issued in a specified time frame"; + } + + leaf seconds { + type uint32 { + range "1..60"; + } + units "seconds"; + default "10"; + description "Time frame to limit the number of packet-too-big ICMPv6 messages"; + } + + } // container packet-too-big + + } // container icmp6-generation + + container gre-header { + description "Enter the gre-header context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the GRE header in the tunnel"; + } + + container key { + description "Enter the key context"; + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the keys in the GRE header"; + } + + leaf send { + type uint32; + default "0"; + description "Send key of a GRE header"; + } + + leaf receive { + type uint32; + default "0"; + description "Receive key of a GRE header"; + } + + } // container key + + } // container gre-header + + list dest-ip { + key "dest-ip-address"; + description "Enter the dest-ip context"; + + leaf dest-ip-address { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ip-address; + } + description "Destination IP address of the tunnel"; + } + + } // list dest-ip + + } // list ip-tunnel + + list ipsec-gateway { + key "name"; + max-elements 1; + description "Enter the ipsec-gateway context"; + + leaf name { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:named-item; + } + description "IPsec gateway name."; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the IPsec gateway."; + } + + leaf default-tunnel-template { + type types-ipsec:tunnel-template-id; + description "The IPsec tunnel template ID."; + } + + leaf ike-policy { + type types-ipsec:ike-policy-id; + description "IKE policy ID."; + } + + leaf pre-shared-key { + type types-sros:encrypted-leaf { + length "1..115"; + } + description + "The pre-shared key used for authentication by two + peers forming the tunnel for the IPSec gateway."; + } + + container default-secure-service { + presence "The default security service used by this IPsec gateway."; + description "Enter the default-secure-service context"; + + leaf service-name { + type types-services:service-name; + description "The name of the default security service used by this IPsec gateway."; + } + + leaf interface { + type types-sros:interface-name; + description "The name of the default interface used by this IPsec gateway."; + } + + } // container default-secure-service + + container local { + description "Enter the local context"; + + leaf gateway-address { + type types-sros:ip-address; + description "The IPsec gateway address."; + } + + container id { + description "Enter the id context"; + + choice id { + default "auto"; + case auto { + + leaf auto { + type empty; + description + "System picks a local ID automatically based on auth-method configured + in ike-policy."; + } + + } + case ipv4 { + + leaf ipv4 { + type types-sros:ipv4-unicast-address; + description "The IPv4 Local ID."; + } + + } + case ipv6 { + + leaf ipv6 { + type types-sros:ipv6-unicast-address; + description "The IPv6 Local ID."; + } + + } + case fqdn { + + leaf fqdn { + type types-sros:fully-qualified-domain-name; + description "The Fully Qualified Domain Name (FQDN) Local ID."; + } + + } + } + } // container id + + } // container local + + container max-history-key-records { + description "Enter the max-history-key-records context"; + + leaf ike { + type uint32 { + range "1..3"; + } + description "The maximum number of historical IKE keys which can be recorded by the system."; + } + + leaf esp { + type uint32 { + range "1..48"; + } + description "The maximum number of historical ESP keys which can be recorded by the system."; + } + + } // container max-history-key-records + + } // list ipsec-gateway + + container static-host { + description "Enter the static-host context"; + + list ipv4 { + key "ip mac"; + description "Enter the ipv4 context"; + + leaf ip { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:ipv4-address; + } + description "IP address"; + } + + leaf mac { + type union { + type string { + length "1..64"; + pattern "<.*>" { + error-message "Config Groups Regex Pattern"; + } + } + type types-sros:mac-unicast-address; + } + description "MAC address"; + } + + leaf admin-state { + type types-sros:admin-state; + default "disable"; + description "Administrative state of the static host"; + } + + leaf sub-profile { + type types-sros:external-named-item; + description "Sub-profile name"; + } + + leaf sla-profile { + type types-sros:external-named-item; + description "SLA profile name"; + } + + leaf ancp-string { + type types-submgt:ancp-string; + description "ANCP string"; + } + + leaf int-dest-id { + type types-submgt:int-dest-id; + description "Intermediate destination ID"; + } + + container subscriber-id { + description "Enter the subscriber-id context"; + + choice subscriber-id { + case string { + + leaf string { + type types-submgt:subscriber-id; + description "Subscriber identification"; + } + + } + case use-sap-id { + + leaf use-sap-id { + type empty; + description "Use the SAP id as subscriber ID"; + } + + } + } + } // container subscriber-id + + } // list ipv4 + + } // container static-host + + } // list sap + + } // list interface + + } // list vprn + + } // container service + + } // list group + + } // container groups + + } // grouping conf-groups + +} diff --git a/docker-compose/application.yml b/docker-compose/application.yml index be4b688cf..f3c009189 100644 --- a/docker-compose/application.yml +++ b/docker-compose/application.yml @@ -34,6 +34,12 @@ spring: change-log: classpath:changelog/changelog-master.yaml labels: ${LIQUIBASE_LABELS} + servlet: + multipart: + enabled: true + max-file-size: 100MB + max-request-size: 100MB + security: # comma-separated uri patterns which do not require authorization permit-uri: /manage/health/**,/manage/info,/swagger-ui/**,/swagger-resources/**,/v3/api-docs -- cgit 1.2.3-korg